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).
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.
Es wird git klonen und die Konfiguration ersetzen (um das ursprüngliche Repo zu "betrachten", also wird Pull / Push in das "Haupt" -Repo gehen), aber es ist einfach genug, um eine Abstraktion vom eigentlichen Bootstrapping zu liefern.
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.
git checkout --to=<path>
. Siehe meine Antwort unten .git worktree add <path> [<branch>]
(Git 2.5 rc2)Antworten:
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
) ausgit worktree add ../cool-app-feature-A feature/A
. Dadurch wird der Zweigfeature/A
in seinem eigenen neuen dedizierten Verzeichnis ausgechecktcool-app-feature-A
.Dies ersetzt ein älteres Skript
contrib/workdir/git-new-workdir
durch einen robusteren Mechanismus, bei dem diese "verknüpften" Arbeitsbäume tatsächlich im neuen$GIT_DIR/worktrees
Hauptordner 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-dir
Option 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).
quelle
Schauen Sie sich $ GIT_SRC_DIR / contrib / workdir / git-new-workdir an .
quelle
Ich schlage mein kleines Skript vor http://www.redhotchilipython.com/en_posts/2013-02-01-clone-per-feature.html
Es wird git klonen und die Konfiguration ersetzen (um das ursprüngliche Repo zu "betrachten", also wird Pull / Push in das "Haupt" -Repo gehen), aber es ist einfach genug, um eine Abstraktion vom eigentlichen Bootstrapping zu liefern.
quelle
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 .
quelle
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.
quelle
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
quelle
git-new-workdir
.