remota - git tag
git trabajando en dos ramas simultáneamente (6)
Tengo un proyecto con muchas ramas.
Me gustaría trabajar en varias sucursales al mismo tiempo sin tener que cambiar de un lado a otro con el git checkout
.
¿Hay alguna forma de que pueda hacer eso además de copiar todo el repositorio en otro lugar?
Al igual que nuestro amigo VonC dijo hace cinco meses, ahora hay una nueva característica desde la versión 2.5.x que hace el trabajo. git worktree .
Echa un vistazo a $GIT_SRC_DIR/contrib/workdir/git-new-workdir .
un script simple para crear un directorio de trabajo que usa enlaces simbólicos para apuntar a un repositorio existente. Esto permite tener diferentes ramas en diferentes directorios de trabajo, pero todas desde el mismo repositorio.
Git 2.5+ (Q2 2015) admitirá esa función: una vez que hayas clonado un repositorio de git, podrás verificar varias sucursales en una ruta diferente con el nuevo comando git worktree add <path> [<branch>]
.
Eso reemplaza una secuencia de comandos anterior contrib/workdir/git-new-workdir
, con un mecanismo más sólido donde esos árboles de trabajo "vinculados" se registran realmente en la carpeta repo nueva $GIT_DIR/worktrees
(para que funcione en cualquier sistema operativo, incluido Windows )
Nuevamente, una vez que haya clonado un repositorio (en una carpeta como /path/to/myrepo
), puede agregar los worktrees para diferentes ramas en diferentes rutas independientes ( /path/to/br1
, /path/to/br2
), mientras tiene aquellos árboles que trabajan vinculados a la historia principal del repositorio (ya no es necesario usar una opción --git-dir
)
Ver más en "¿ Múltiples directorios de trabajo con Git? ".
Y una vez que haya creado un árbol de trabajo, puede moverlo o eliminarlo (con Git 2.17+, Q2 2018).
Git es compatible con múltiples worktree al mismo tiempo. Para más información, ver:
Sin embargo, es muy difícil admitir múltiples worktree con ID. Por ejemplo, esta es una solicitud de mejora en JGet (eclipse ID) para admitir worktree.
Por lo tanto, debe administrar el proyecto manualmente (línea de comando) con muchos problemas o trabajar con un solo árbol de trabajo en un IDE.
No realmente, ya que Git solo admite tener una copia de trabajo de los datos del repositorio dentro del directorio del repositorio.
Si quiere comprometer / extraer al mismo repositorio con dos copias de trabajo diferentes, puede crear un repositorio vacío y clonarlo en dos copias de trabajo .
Siempre que haya terminado algo, simplemente presione hacia el repositorio "principal" .
Algunos consejos:
man git-clone
git clone --bare
Sugiero mi pequeño guión http://www.redhotchilipython.com/en_posts/2013-02-01-clone-per-feature.html
Hará git clone y reemplazará la configuración (para "mirar" el repositorio original, por lo que pull / push irá al repo "principal") básicamente, pero es lo suficientemente simple como para servir una abstracción del bootstrapping real.