Una nota muy básica sobre la gestión de ramas en el servidor pero que siempre me olvido y tengo que ir buscando cómo resolver.
Traer una nueva rama al repositorio local
Nos encontramos en la situación siguiente:
Hemos clonado un proyecto desde la URL https://git.example.com/project.git
pero, en lugar de trabajar desde la rama por defecto, queremos que nuestra área de trabajo se posicione en la rama de desarrollo del repositorio remoto.
Por simplicidad, tanto la rama de desarrollo en el repositorio remoto como la rama de desarrollo en el repositorio local se denominarán develop
.
Para lograr esto, como primer paso, traeremos la información del repositorio remoto a nuestro repositorio local con el comando fetch
.
$ git fetch --all
Fetching origin
remote: Counting objects: YY, done.
remote: Compressing objects: 100% (YY/YY), done.
remote: Total YY (delta WW), reused 0 (delta 0)
Unpacking objects: 100% (YY/YY), done.
De https://git.example.com/project
* [new branch] develop -> origin/develop
Se puede observar que el comando fetch ‑‑all
detecta la existencia de la rama develop
en el repositorio remoto origin
y la descarga. En el caso de existir más ramas en el repositorio remoto, estas también serán descargadas.
Una vez descargadas las ramas del repositorio remoto, para traer la rama develop
del repositorio remoto al área de trabajo, creando una rama de nombre develop
en el repositorio local utilizamos el comando checkout ‑b
:
$ git checkout -b develop origin/develop
Branch develop set up to track remote branch develop from origin.
Al aplicar este comando hemos conseguido establecer el seguimiento (trancking) entre la rama develop
del repositiorio y la rama develop
en el repositorio remoto origin
.
La indicación de tracking significa que todos los pushes realizados en nuestra rama develop
local actualizarán por defecto la rama develop
del repositorio remoto origin
.
Subir una rama local al servidor remoto
Este caso es el opuesto al anterior.
Esto es, tenemos un proyecto que hemos bajado de un repositorio remoto origin
y, sobre este repositorio remoto, queremos subir una nueva rama develop
que hasta el momento sólo existe en nuestro repositorio local.
En este caso, el primer paso consiste en posicionar nuestro repositorio local en la rama develop
a través del comando checkout
.
$ git checkout develop
Switched to branch 'develop'
Luego, subimos la rama del repositorio local en la que estamos posicionados con el nombre develop
en el repositorio origin
utilizando el comando push
al cual le incorporamos la opción ‑u
para incorporar el tracking.
$ git push -u origin develop
Counting objects: XXXX, done.
Compressing objects: 100% (YY/YY), done.
Writing objects: 100% (YY/YY), ZZZZ bytes, done.
Total YY (delta WWW), reused 0 (delta 0)
To https://git.example.com/project.git
* [new branch] develop -> develop
Esto puede verificarse con el comando git branch ‑vv
.