2010-01-12 1 views
112

Ich habe ein Projekt mit vielen Zweigen.Git arbeitet an zwei Niederlassungen gleichzeitig

Ich möchte mehrere Zweige gleichzeitig ohne Hin- und Herschalten mit git checkout arbeiten.

Gibt es eine Möglichkeit, das zu tun, außer das gesamte Repository woanders zu kopieren?

+0

möglich duplicate von [Mehrere Arbeitsverzeichnisse mit Git?] (Http://stackoverflow.com/questions/6270193/multiple-working-directories-with-git) – meagar

+1

Git 2.5+ (Q2 2015) wird dies offiziell mit unterstützen der neue Befehl 'git checkout --to = '. Siehe [meine Antwort unten] (http://stackoverflow.com/a/30186843/6309). – VonC

+1

Eigentlich ist der Befehl 'git worktree hinzufügen []' (Git 2.5 rc2) – VonC

Antwort

92

Git 2.5+ (Q2 2015) unterstützt diese Funktion: Nachdem Sie ein Git Repo geklont haben, können Sie mit dem neuen Befehl git worktree add <path> [<branch>] mehrere Zweige in einem anderen Pfad auschecken.

, dass eine ältere Skript contrib/workdir/git-new-workdir, mit einem robusteren Mechanismus ersetzt, wenn diese „verknüpft“ Arbeits Bäume sind tatsächlich in der Haupt Repo neuen $GIT_DIR/worktrees Ordner aufgezeichnet (so dass die Arbeit auf jedem Betriebssystem, einschließlich Windows).

Auch hier, wenn Sie einen Repo geklont (in einem Ordner wie /path/to/myrepo), können Sie worktrees für verschiedene Zweige in verschiedenen unabhängige Pfade (/path/to/br1, /path/to/br2) hinzufügen, während diese Arbeits Bäume an der Haupt Repo-Geschichte verbunden mit (keine Notwendigkeit, eine --git-dir Option mehr verwenden)

mehr unter "Multiple working directories with Git?".

+1

Dies sollte die neue akzeptierte Antwort sein, da 2.5.X nun die empfohlene Version ist, sogar für Windows http://i.imgur.com/oQvUhVl.png https://git-scm.com/download/win – RAnders00

-1

Nicht wirklich als Git unterstützt nur eine Arbeitskopie der Repository-Daten innerhalb des Repository-Verzeichnisses.

Wenn Sie möchten, auf das gleiche Repository mit zwei verschiedenen Arbeitskopien begehen/ziehen, könnten Sie eine nackten Repository erstellen und klonen es zwei Arbeitskopien.

Wenn Sie etwas fertig haben, drücken Sie einfach auf die "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 die Antwort über 'git "Neues Arbeitsverzeichnis". – sleske

+0

Das ist eine nette Idee. Klonen Sie es einfach zweimal. –

39

einen Blick auf $GIT_SRC_DIR/contrib/workdir/git-new-workdir nehmen.

ein einfaches Skript, um ein Arbeitsverzeichnis zu erstellen, das symbolische Verknüpfungen zu Punkt in einem vorhandenen Repository verwendet. Dies ermöglicht verschiedene Verzweigungen in verschiedenen Arbeitsverzeichnissen, aber alle von demselben Repository.

+0

Und das ähnliche: http://stackoverflow.com/questions/655202/git-and-c-workflow-how-to-handle-object-and-archive-files/1889179#1889179 – Tobu

+3

@Stefan, das ist das coolste Ding seit Schiebebrot. –

+2

Ich weiß, das ist alt, aber könnten Sie bitte eine Erklärung liefern. –

0

Git unterstützt mehrere Arbeitsbäume gleichzeitig. Für weitere Informationen siehe:

Wie immer ist es sehr schwer ist, mehrere worktree mit IDs zu unterstützen. Zum Beispiel ist dies ein enhancement request in JGet (Eclipse-ID) zur Unterstützung von Worktree.

So, Sie müssen Projekt manuell (Befehlszeile) mit vielen Problemen verwalten oder arbeiten mit einem einzigen Arbeitsbaum in einer IDE.

+0

Ab sofort ist diese Antwort nicht korrekt. Bitte aktualisieren Sie die Antwort. –

0

Wie unser Freund VonC sagte vor fünf Monaten, jetzt gibt es eine neue Funktion seit Version 2.5.x, die die Arbeit macht. git worktree.

+0

Isn Ist es das gleiche wie das, was ich vor 5 Monaten in [meine Antwort oben] erwähnt habe (http://stackoverflow.com/a/30186843/6309)? – VonC

+0

Ops. Jetzt fühle ich mich schrecklich. Ich habe das nicht richtig beachtet. Mein Fehler. –