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

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