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?

Name
quelle
Mögliches Duplikat mehrerer Arbeitsverzeichnisse mit Git?
Meagar
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).

VonC
quelle
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.

Stefan Näwe
quelle
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

Wie unser Freund VonC vor fünf Monaten sagte, gibt es jetzt seit Version 2.5.x eine neue Funktion, die den Job erledigt. Git Worktree .

Gemeinschaft
quelle
Ist es nicht dasselbe wie das, was ich vor 5 Monaten in meiner Antwort oben erwähnt habe ?
VonC
Ops. Jetzt fühle ich mich schrecklich. Ich habe dem nicht die gebührende Aufmerksamkeit geschenkt. Mein Fehler.
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.

Mostafa
quelle
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

BastiBen
quelle
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