2011-09-12 8 views
40

Ho 2 rami, che non sono ancora pronti per essere uniti, ma ho una logica complementare, che vorrei rivedere (prima della fusione)È possibile visualizzare più rami di git contemporaneamente per lo stesso progetto?

Posso controllare più rami di git dello stesso progetto? È possibile?

+0

Si sarà in grado di farlo con Git 2.5+ e il suo nuovo comando 'git checkout --to = '. Vedi [la mia risposta sotto] (http://stackoverflow.com/a/30186481/6309). – VonC

+0

La sintassi attuale è 'git worktree add '. Ho aggiornato [la mia risposta di seguito] (http://stackoverflow.com/a/30186481/6309). – VonC

risposta

36

È possibile copiare semplicemente il repository in una nuova posizione (copiando letteralmente la directory o utilizzando git clone --shared) e controllando un ramo per posizione.

È anche possibile utilizzare git-worktree per creare più directory di lavoro da una singola istanza di un repository.

In caso contrario, il mezzo principale per confrontare i file tra filiali prima di unirli è git diff.

+3

Nota: mi rendo conto che la tua risposta è stata downvoted oggi (http://stackoverflow.com/posts/7393302/timeline), ma non l'ho downvoted;) Ho semplicemente (2 anni fa) sottolineato il nuovo comando git worktree. – VonC

1

Per prima cosa mi viene in mente di effettuare il checkout di ogni filiale su un progetto separato. Quindi: 1. checkout ramo Un clone sul primario (1) 2. Creare un nuovo clone (2) 3. cassa ramo B in clone 2

secondo approccio potrebbe essere quello di creare un nuovo ramo (aka C) e unire entrambi i rami A e B ad esso. Se sono gratuiti, questo potrebbe essere d'aiuto per la tua recensione.

-1

Come già accennato, si può diff rami con git diff:

git diff [--options] <commit> [--] [<path>…] 

This form is to view the changes you have in your working tree relative to the named <commit>. You can use HEAD to compare it with the latest commit, or a branch name to compare with the tip of a different branch. 

Estratto di cui sopra è dalla documentazione Git.

1

Sì, è possibile con la cura appropriata. Comunque stai prendendo una delle copie "fuori" dalla normale directory git usando l'opzione --work-tree=<path>, quindi le modifiche non verranno viste da git a meno che tu non lo dica esplicitamente. Ho dato un esempio qui single-working-branch-with-git - vedi il segmento AGGIORNATO.

Si noti che il git-new-workdir non funziona su Windows XP in quanto richiede i collegamenti di stile Unix.

6

Con Git 2.5 + (Q2 2015), un repo Git sosterrà più alberi lavorano con git worktree add <path> (e che sostituirà contrib/workdir/git-new-workdir)

Quegli alberi lavoro "collegate" sono effettivamente registrati nella principale repo nuova cartella $GIT_DIR/worktrees (in modo che funzioni su qualsiasi sistema operativo, incluso Windows).

saperne di più visita "Multiple working directories with Git?"

+0

Nota che a differenza di git-new-workdir, git worktree non ti permette di creare più workrees per lo stesso ramo:/ – NikiC

+2

@NikiC Puoi aggiungere il flag '--force' (anche' -f' funziona) secondo [il documento] (https://git-scm.com/docs/git-worktree#_options) –

-1

Ora git include il comando worktree di fare esattamente questo.

Problemi correlati