Fundamentos de git II
Este artículo tiene como objetivo profundizar en el manejo de Git con el uso de ramas y repositorios remotos.
Videotutoriales
Índice
- Ramas
- Fusiones de ramas
- Conflictos
- Remotos
- Flujos de trabajo con ramas
Referencias
- 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)
Contenidos
Ramas
Definición de ramas
- 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.
Crear ramas
git branch <nombre_rama>
Ver ramas disponibles
git branch
Cambiar de rama
git checkout <nombre_rama>
Fusionar una 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>
Eliminar una rama
git branch -d <nombre_rama>
Remotos
Clonar un repositorio
git clone <URL_REPOSITORIO>
Ver remotos
git remote -v
Añadir, eliminar y renombrar remotos
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
Traer información del 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
Traer y fusionar cambios del remoto
git pull [NOMBRE_REMOTO] [NOMBRE_RAMA] # Pull = fetch + merge
Enviar cambios al remoto
git push [NOMBRE_REMOTO] [NOMBRE_RAMA]
Enviar los cambios de una rama al remoto y crear una rama remota asociada
git push -u NOMBRE_REMOTO NOMBRE_RAMA