Git 2.5+ (Q2 2015) lo admitirá oficialmente con el nuevo comando git checkout --to=<path>. Vea mi respuesta a continuación .
VonC
2
En realidad, el comando será git worktree add <path> [<branch>](Git 2.5 rc2)
VonC
Respuestas:
156
¡Git 2.5+ (Q2 2015) es compatible con esta característica!
Si tiene un repositorio git cool-app, cd a root ( cd cool-app), ejecute git worktree add ../cool-app-feature-A feature/A. Esto comprueba fuera de la rama feature/Aen su propio nuevo directorio dedicado, cool-app-feature-A.
Eso reemplaza una secuencia de comandos anterior contrib/workdir/git-new-workdir, con un mecanismo más robusto donde esos árboles de trabajo "vinculados" se registran realmente en la $GIT_DIR/worktreescarpeta nueva del repositorio principal (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 árboles de trabajo para diferentes ramas en diferentes rutas independientes ( /path/to/br1, /path/to/br2), mientras tiene esos árboles de trabajo vinculados al historial principal del repositorio (ya no es necesario usar una --git-diropción)
Un script simple para crear un directorio de trabajo que utiliza 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.
Hará clonar git y reemplazará la configuración (para "mirar" el repositorio original, por lo que pull / push entrará en el repositorio "principal") básicamente, pero es lo suficientemente simple como para servir una abstracción del arranque real.
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.
A partir de ahora, esta respuesta no es correcta. Por favor actualice la respuesta.
narendra-choudhary
-2
En realidad, no, ya que Git solo admite tener una copia de trabajo de los datos del repositorio dentro del directorio del repositorio.
Si desea confirmar / extraer en el mismo repositorio con dos copias de trabajo diferentes, puede crear un repositorio desnudo y clonarlo en dos copias de trabajo .
Cada vez que haya terminado algo, simplemente empuje al repositorio desnudo "principal" .
git checkout --to=<path>
. Vea mi respuesta a continuación .git worktree add <path> [<branch>]
(Git 2.5 rc2)Respuestas:
¡Git 2.5+ (Q2 2015) es compatible con esta característica!
Si tiene un repositorio git
cool-app
, cd a root (cd cool-app
), ejecutegit worktree add ../cool-app-feature-A feature/A
. Esto comprueba fuera de la ramafeature/A
en su propio nuevo directorio dedicado,cool-app-feature-A
.Eso reemplaza una secuencia de comandos anterior
contrib/workdir/git-new-workdir
, con un mecanismo más robusto donde esos árboles de trabajo "vinculados" se registran realmente en la$GIT_DIR/worktrees
carpeta nueva del repositorio principal (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 árboles de trabajo para diferentes ramas en diferentes rutas independientes (/path/to/br1
,/path/to/br2
), mientras tiene esos árboles de trabajo vinculados al historial principal del repositorio (ya no es necesario usar una--git-dir
opción)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).
fuente
Eche un vistazo a $ GIT_SRC_DIR / contrib / workdir / git-new-workdir .
fuente
Sugiero mi pequeño script http://www.redhotchilipython.com/en_posts/2013-02-01-clone-per-feature.html
Hará clonar git y reemplazará la configuración (para "mirar" el repositorio original, por lo que pull / push entrará en el repositorio "principal") básicamente, pero es lo suficientemente simple como para servir una abstracción del arranque real.
fuente
Como dijo nuestro amigo VonC hace cinco meses, ahora hay una nueva característica desde la versión 2.5.x que hace el trabajo. git worktree .
fuente
Git soporta 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.
fuente
En realidad, no, ya que Git solo admite tener una copia de trabajo de los datos del repositorio dentro del directorio del repositorio.
Si desea confirmar / extraer en el mismo repositorio con dos copias de trabajo diferentes, puede crear un repositorio desnudo y clonarlo en dos copias de trabajo .
Cada vez que haya terminado algo, simplemente empuje al repositorio desnudo "principal" .
Algunos consejos:
man git-clone
git clone --bare
fuente
git-new-workdir
.