- Ramas
- Fusiones de ramas
- Conflictos
- Remotos
- Flujos de trabajo con ramas
- Libro de Git
- Hoja de referencia de Git
- Hoja de referencia de Git (PDF)
- Herramienta “Visualizing Git” (muy interesante para comprender el funcionamiento interno de Git y el trabajo con ramas y remotos)
- Una rama es un puntero que apunta a un determinado commit.
- Un repositorio debe tener una rama como mínimo.
- El nombre de la rama que se crea por defecto es
master
. Este nombre no es especial ni tiene una función o significado especial. - Existe un puntero especial llamado
HEAD
que apunta a la rama en la que estamos en ese momento. - Al cambiar de rama se modifica el contenido del directorio de trabajo: éste se muestra tal como estaba en la rama a la que hemos saltado.
- La creación y el cambio de ramas se realizan de forma instantánea: no tienen apenas coste.
- El trabajo con ramas es muy interesante por los siguientes motivos:
- Se pueden hacer pruebas sin modificar el código en producción.
- Se puede separar el trabajo en tareas o subproyectos que no afecten unos a otros.
- Cada miembro del equipo puede trabajar sin ser interferido por los demás.
git branch <nombre_rama>
git branch
git checkout <nombre_rama>
- Primero nos posicionamos en la rama sobre la que se va a realizar la fusión
- Para realizar la fusión ejecutar:
git merge <nombre_rama_a_fusionar>
git branch -d <nombre_rama>
git clone <URL_REPOSITORIO>
git remote -v
git remote add <NOMBRE_REMOTO> <URL_REPOSITORIO> # Añadir remoto
git remote rm <NOMBRE_REMOTO> # Eliminar remoto
git remote rename <NOMBRE_ORIGINAL> <NOMBRE_NUEVO> # Renombrar remoto
# Este comando NO realiza la fusión en la rama local
# Si se desean incorporar los cambios habría que realizar un git merge
git fetch [NOMBRE_REMOTO] # El nombre del remoto por defecto es ORIGIN
git pull [NOMBRE_REMOTO] [NOMBRE_RAMA] # Pull = fetch + merge
git push [NOMBRE_REMOTO] [NOMBRE_RAMA]
git push -u NOMBRE_REMOTO NOMBRE_RAMA
Realiza las tareas que se indican a continuación. Incluye las capturas de pantalla que se pidan en un documento tipo LibreOffice o Word.
Cuando se pida realizar un commit recuerda que previamente hay que añadir los archivos al área de preparación si no se ha indicado antes en las instrucciones. En esos casos, un commit significa ejecutar los comandos git add
y git commit
.
¡IMPORTANTE! No utilices el bloc de notas de Windows para editar los archivos de texto de las tareas. Utiliza en su lugar un editor específico. Algunas sugerencias son:
El bloc de notas de Windows utiliza una codificación de caracteres específica de Windows y además incluye la extensión .txt
por defecto al final de los nombres de archivo. Por tanto, no es una buena elección para trabajar.
Las tareas a realizar son:
- Crea una carpeta denominada
S2R1
. Realiza las siguientes acciones en ella:- Crea un repositorio Git.
- Crea un fichero denominado
actores.txt
. Añade tres nombres de actores cada uno en una línea distinta. - Haz un primer commit.
- Crea una rama denominada
test
. - Cambia a la rama
test
- En la rama
test
crea un fichero denominadoactrices.txt
. Añade tres nombres de actrices y realiza un commit en dicha rama. - Haz una captura de pantalla del resultado del comando
git log --graph --all
. - Cambia a la rama
master
. - Incorpora los cambios de la rama
test
a la ramamaster
. Haz una captura de pantalla de los comandos que has utilizado y de su resultado. - Crea una segunda rama denominada
test2
. La ramatest2
apunta al mismo commit que la ramamaster
en este momento. - En la rama
master
, añade una actriz al ficheroactrices.txt
y haz un commit. - Cambia a la rama
test2
- En la rama
test2
, añade una actriz al ficheroactrices.txt
y haz otro commit. - Haz una captura de pantalla del resultado del comando
git log --graph --all
. Debe haber dos caminos distintos: uno para la ramamaster
y otro para la ramatest2
. - Cambia a la rama
master
- Incorpora los cambios de la rama
test2
a la ramamaster
. ¿Se produce un conflicto? De ser así realiza una captura del comandogit status
. - Resuelve el conflicto incorporando los dos nombres de actrices.
- Haz una captura de pantalla del resultado del comando
git log --graph --all
. Observa que se ha creado un nuevo commit que integra los dos caminos anteriores.
- Crea una carpeta denominada
S2R2-remoto
. Inicializa un repositorio Git en su interior mediante el comandogit init --bare
. Esta carpeta se utilizará como repositorio remoto. - Clona el repositorio
S2R2-remoto
en una carpeta denominadaS2R2
. Adjunta captura de pantalla del resultado del comando de clonado. A continuación realiza las siguientes acciones en el repositorioS2R2
:- Crea un archivo denominado
directores.txt
. Añade el nombre de tres directores de cine. - Haz un commit.
- Realiza un push al repositorio remoto. Adjunta captura de pantalla del resultado.
- Crea una rama denominada
version1
. - Cambia a la rama
version1
. - En la rama
version1
añade el nombre de dos directores de cine más al archivodirectores.txt
y haz un commit de los cambios. - Realiza un push de la rama al repositorio remoto de manera que quede asociada a la rama remota del mismo nombre. Adjunta captura de pantalla del resultado.
- Crea un archivo denominado
- Clona el repositorio
S2R2-remoto
en una segunda carpeta denominadaS2R3
. Realiza las siguientes acciones sobre ella:- Muestra en la consola el contenido del fichero
directores.txt
y el resultado del comandogit status
. Debe mostrar tres directores. - Cambia a la rama
version1
. Muestra el resultado del comando. Comprueba que se crea una rama localversion1
con el contenido de la rama remotaorigin/version1
y enlazada con ella. Al clonar el repositorio la rama no existía (solo se clona la rama principal,master
), pero al cambiar a una rama que existe en el remoto se produce su creación local y enlazado con su correspondiente remota. - Muestra el contenido del fichero
directores.txt
por la pantalla. Comprueba que se muestran los 5 nombres de directores esperados. Adjunta captura de pantalla. - Cambia a la rama
master
. - Incorpora los cambios de la rama
version1
a la ramamaster
. - Sube la rama
master
actualizada al servidor. Adjunta captura de pantalla del resultado del comando.
- Muestra en la consola el contenido del fichero
- Vuelve de nuevo a la carpeta
S2R2
y realiza las siguientes acciones:- Obtén los cambios que hay en el repositorio remoto sin fusionarlos en la rama local. Adjunta captura de pantalla del resultado del comando utilizado.
- Actualiza la rama
master
local con el contenido de la ramamaster
del repositorio remoto. Adjunta captura de pantalla del resultado del comando utilizado. - Comprueba que aparecen los 5 nombres de directores esperados.
Guarda el fichero con las capturas en formato PDF y nómbralo según el patrón APELLIDOS_NOMBRE_sesion2.pdf
. La entrega del fichero se realizará a través de la plataforma Aules.