2010-01-12 15 views
112

Tengo un proyecto con muchas ramas.git trabajando en dos ramas simultáneamente

me gustaría trabajar en varios ramas simultáneamente sin tener que cambiar de ida y vuelta con git checkout.

¿Hay alguna forma en que pueda hacer eso además de copiar todo el repositorio en otro lugar?

+0

posible duplicado de [¿Múltiples directorios de trabajo con Git?] (Http://stackoverflow.com/questions/6270193/multiple-working-directories-with-git) – meagar

+1

Git 2.5+ (Q2 2015) apoyará oficialmente esto con el nuevo comando 'git checkout --to = '. Ver [mi respuesta a continuación] (http://stackoverflow.com/a/30186843/6309). – VonC

+1

En realidad, el comando será 'git worktree add []' (Git 2.5 rc2) – VonC

Respuesta

92

Git 2.5+ (Q2 2015) admitirá esa característica: Una vez que haya clonado un repositorio git, podrá verificar varias sucursales en una ruta diferente con el nuevo comando git worktree add <path> [<branch>].

que reemplaza una secuencia de comandos mayores contrib/workdir/git-new-workdir, con un mecanismo más robusto donde los "vinculados" árboles de trabajo son en realidad registran en el repositorio principal $GIT_DIR/worktrees nueva carpeta (por lo que el trabajo en cualquier sistema operativo, incluyendo Windows).

Una vez más, una vez que ha clonado un acuerdo de recompra (en una carpeta como /path/to/myrepo), puede agregar worktrees para diferentes ramas de caminos independientes diferentes (/path/to/br1, /path/to/br2), mientras que los árboles de trabajo vinculados a la historia principal de recompra (no es necesario utilizar una opción --git-dir más)

Ver más en "Multiple working directories with Git?".

+1

Esta debería ser la nueva respuesta aceptada, ya que 2.5.X es ahora la versión recomendada, incluso para Windows http://i.imgur.com/oQvUhVl.png https://git-scm.com/download/win – RAnders00

-1

No es que realmente, ya que Git solo admite tener una copia de trabajo de los datos del repositorio dentro del directorio del repositorio.

Si desea comprometerse/tirar para el mismo repositorio con dos copias de trabajo diferentes, se puede crear un repositorio desnudoy clonarlo a dos copias de trabajo .

Cuando haya terminado algo, simplemente presione al "principal" repositorio desnudo.

Algunos consejos:

man git-clone

git clone --bare

+3

_ "Git solo admite tener una copia de trabajo de los datos del repositorio" _ -1 No es cierto, consulte la respuesta sobre 'git -new-workdir'. – sleske

+0

Esa es una buena idea. Solo clonarlo dos veces. –

39

miren $GIT_SRC_DIR/contrib/workdir/git-new-workdir.

una secuencia de comandos simple para crear un directorio de trabajo que utiliza enlaces simbólicos al punto en un repositorio existente. Esto permite tener diferentes ramas en diferentes directorios de trabajo pero todas del mismo repositorio .

+0

Y lo similar: http://stackoverflow.com/questions/655202/git-and-c-workflow-how-to-handle-object-and-archive-files/1889179#1889179 – Tobu

+3

@Stefan, este es el más genial cosa desde el pan deslizado. –

+2

Sé que esto es viejo, pero podría darme alguna explicación por favor. –

0

Git es compatible con múltiples worktree al mismo tiempo. Para obtener más información, véase:

Cómo siempre es muy difícil de soportar múltiples worktree con ID. Por ejemplo, este es un enhancement request 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.

+0

A partir de ahora, esta respuesta no es correcta. Por favor actualiza la respuesta. –

0

Como dijo nuestro amigo VonC dijo que hace cinco meses, ahora hay una nueva característica desde la versión 2.5.x que hace el trabajo. git worktree.

+0

Isn ¿No es lo mismo que mencioné hace 5 meses en [mi respuesta anterior] (http://stackoverflow.com/a/30186843/6309)? – VonC

+0

Ops. Ahora me siento terrible. No le he prestado la debida atención a eso. Mi error. –