Estos días nos surgió la necesidad de revisar más de una rama de git del mismo proyecto a la vez. De entrada esto no es posible ya que al cambiar de rama con git checkout rama
el contenido del proyecto cambia. Así que, ¿como tener dos ramas abiertas al mismo tiempo? Para eso tenemos el comando git worktree
, el cual nos permite administrar árboles de trabajo múltiples.
Lo primero que debes saber es que un repositorio tiene un árbol de trabajo principal y cero o más árboles de trabajo vinculados. Así que nuestro directorio de trabajo preparado por git init
o git clone
se denomina árbol de trabajo principal, y un árbol de trabajo vinculado se agrega con el comando git worktree add
, su sintaxis es:
$ git worktree add ../nuevo-directorio-trabajo-vinculado alguna-rama-existente
Por ejemplo, si clonamos el repositorio de EDgrid
en nuestro directorio ~/EDteam
, nuestro directorio de trabajo principal será ~/EDteam/EDgrid
, suponiendo que creamos la rama feature/buttonnav
, y en ella agregamos nuevos commits al proyecto, esta rama se encontrará varios commits por encima de la rama master
.
Si queremos revisar estas dos ramas a la vez, usaremos el siguiente comando:
$ git worktree add ../my-repo-vinculado master
Lo que generará un nuevo directorio ubicado en ~/EDteam/my-repo-vinculado
pocisionado en la rama master
de nuestro repositorio, ahora lo único que debemos hacer es abrir en nuestro IDE los directorios ~/EDteam/EDgrid
y ~/EDteam/my-repo-vinculado
, los cuales se encuentran pocisionados en las ramas feature/buttonnav
y master
respectivamente.
Para listar nuestros árboles de trabajo usamos el comando git worktree list
$ git worktree list
/home/alejandro/EDteam/EDgrid 72ccdc8 [feature/buttonnav]
/home/alejandro/EDteam/my-repo-vinculado 72ccdc8 [master]
Cuando ya no requieras hacer uso de un árbol de trabajo vinculado, elimina la carpeta contenedora y luego usa el comando git worktree prune
.
$ rm -rf ../my-repo-vinculado
$ git worktree prune
Te esperamos en los siguientes artículos en donde hablaremos mas acerca de estos temas, los cuales hoy en día son de vital importancia en el mundo de la tecnología.