Git arbeitet gleichzeitig an zwei Zweigen


167

Ich habe ein Projekt mit vielen Niederlassungen.

Ich möchte an mehreren Zweigen gleichzeitig arbeiten, ohne mit hin und her zu wechseln git checkout.

Kann ich das auf irgendeine Weise tun, außer das gesamte Repository woanders zu kopieren?



1
Git 2.5+ (Q2 2015) wird dies mit dem neuen Befehl offiziell unterstützen git checkout --to=<path>. Siehe meine Antwort unten .
VonC

2
Eigentlich wird der Befehl sein git worktree add <path> [<branch>](Git 2.5 rc2)
VonC

Antworten:


156

Git 2.5+ (Q2 2015) unterstützt diese Funktion!

Wenn Sie ein Git-Repo haben cool-app, führen Sie cd to root ( cd cool-app) aus git worktree add ../cool-app-feature-A feature/A. Dadurch wird der Zweig feature/Ain seinem eigenen neuen dedizierten Verzeichnis ausgecheckt cool-app-feature-A.

Dies ersetzt ein älteres Skript contrib/workdir/git-new-workdirdurch einen robusteren Mechanismus, bei dem diese "verknüpften" Arbeitsbäume tatsächlich im neuen $GIT_DIR/worktreesHauptordner des Repos aufgezeichnet werden (sodass sie auf jedem Betriebssystem, einschließlich Windows, funktionieren).

Sobald Sie ein Repo geklont haben (in einem Ordner wie /path/to/myrepo), können Sie Arbeitsbäume für verschiedene Zweige in verschiedenen unabhängigen Pfaden ( /path/to/br1, /path/to/br2) hinzufügen , während diese Arbeitsbäume mit dem Haupt-Repo-Verlauf verknüpft sind (Sie müssen keine --git-dirOption mehr verwenden).

Weitere Informationen finden Sie unter " Mehrere Arbeitsverzeichnisse mit Git? ".

Sobald Sie einen Arbeitsbaum erstellt haben, können Sie ihn verschieben oder entfernen (mit Git 2.17+, Q2 2018).


2
Dies sollte die neu akzeptierte Antwort sein, da 2.5.X jetzt die empfohlene Version ist, auch für Windows i.imgur.com/oQvUhVl.png git-scm.com/download/win
RAnders00

40

Schauen Sie sich $ GIT_SRC_DIR / contrib / workdir / git-new-workdir an .

Ein einfaches Skript zum Erstellen eines Arbeitsverzeichnisses, das mithilfe von Symlinks auf ein vorhandenes Repository verweist. Dies ermöglicht unterschiedliche Zweige in unterschiedlichen Arbeitsverzeichnissen, jedoch alle aus demselben Repository.


Und das Gleiche
Tobu

2
Ich weiß, dass dies alt ist, aber könnten Sie bitte eine Erklärung geben.
Dav_i

@dav_i: Wie das ?
Stefan Näwe

@ StefanNäwe Ah ich war verwirrt - zu früh am Morgen ... aktualisierte deine Antwort mit Link.
dav_i



0

Git unterstützt mehrere Arbeitsbäume gleichzeitig. Weitere Informationen finden Sie unter:

Es ist jedoch sehr schwierig, mehrere Arbeitsbäume mit IDs zu unterstützen. Dies ist beispielsweise eine Erweiterungsanforderung in JGet (Eclipse ID) zur Unterstützung des Arbeitsbaums.

Sie müssen das Projekt also manuell (Befehlszeile) mit vielen Problemen verwalten oder mit einem einzelnen Arbeitsbaum in einer IDE arbeiten.


Diese Antwort ist derzeit nicht korrekt. Bitte aktualisieren Sie die Antwort.
Narendra-Choudhary

-2

Nicht wirklich, da Git nur eine Arbeitskopie der Repository-Daten im Repository-Verzeichnis unterstützt.

Wenn Sie dasselbe Repository mit zwei verschiedenen Arbeitskopien festschreiben / abrufen möchten, können Sie ein nacktes Repository erstellen und es auf zwei Arbeitskopien klonen .

Wann immer Sie etwas fertig haben, schieben Sie einfach in das "Haupt" -Bare-Repository.

Einige Hinweise:

man git-clone

git clone --bare


3
"Git unterstützt nur eine Arbeitskopie der Repository-Daten" -1 Nicht wahr, siehe Antwort zu git-new-workdir.
Sleske

Das ist eine schöne Idee. Klonen Sie es einfach zweimal.
Serge Vinogradoff
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.