Suche…


Syntax

  • git worktree add [-f] [--detach] [--checkout] [-b <Neuer Zweig>] <Pfad> [<Zweig>]
  • git worktree prune [-n] [-v] [--expire <expire>]
  • git worktree list [--porzellan]

Parameter

Parameter Einzelheiten
-f --force Fügen Sie standardmäßig keinen neuen Arbeitsbaum hinzu, wenn <branch> bereits von einem anderen Arbeitsbaum ausgecheckt ist. Diese Option überschreibt diesen Schutz.
-b <new-branch> -B <new-branch> Erstellen Sie mit add einen neuen Zweig mit dem Namen <new-branch> , der bei <branch> <new-branch> beginnt, und checken Sie <new-branch> in den neuen Arbeitsbaum aus. Wenn <branch> weggelassen wird, wird standardmäßig HEAD . Standardmäßig weigert sich -b , einen neuen Zweig anzulegen, wenn dieser bereits vorhanden ist. -B überschreibt diese Sicherheitsmaßnahme und setzt <new-branch> auf <branch> .
--ablösen Mit add trennen Sie HEAD im neuen Arbeitsbaum.
- [no-] Kasse Standardmäßig fügen Sie --no-checkout hinzu <branch> . Mit --no-checkout kann jedoch das Auschecken unterdrückt werden, um Anpassungen vorzunehmen, z.
-n - dry-run Entfernen Sie nichts mit der Pflaume. einfach berichten, was es entfernen würde.
--Porzellan Mit liste, Ausgabe in einem einfach zu parse Format für Skripte. Dieses Format bleibt über Git-Versionen und unabhängig von der Benutzerkonfiguration stabil.
-v --verbose Melden Sie mit Pflaume alle Entfernungen.
--expire <time> Mit Pflaume verfallen nur ungenutzte Arbeitsbäume, die älter als <time> .

Bemerkungen

Weitere Informationen finden Sie in der offiziellen Dokumentation: https://git-scm.com/docs/git-worktree .

Verwenden eines Arbeitsbaums

Sie sind gerade dabei, an einer neuen Funktion zu arbeiten, und Ihr Chef fordert Sie auf, sofort etwas zu beheben. In der Regel möchten Sie mit git stash Ihre Änderungen vorübergehend speichern. Zu diesem Zeitpunkt befindet sich Ihr Arbeitsbaum jedoch in einem Zustand der Unordnung (neue, verschobene und entfernte Dateien sowie andere verstreute Teile), und Sie möchten Ihren Fortschritt nicht stören.

Durch das Hinzufügen eines Worktrees erstellen Sie einen temporären verknüpften Arbeitsbaum, um den Notfall zu beheben, entfernen Sie ihn, wenn Sie fertig sind, und setzen Sie dann Ihre vorherige Codierungssitzung fort:

$ git worktree add -b emergency-fix ../temp master
$ pushd ../temp
# ... work work work ...
$ git commit -a -m 'emergency fix for boss'
$ popd
$ rm -rf ../temp
$ git worktree prune

ANMERKUNG: In diesem Beispiel befindet sich der Fix immer noch im Notfall-Zweig. An dieser Stelle möchten Sie wahrscheinlich git merge oder git format-patch und anschließend den notfall-notierungszweig entfernen.

Verschieben eines Arbeitsbaums

Derzeit (ab Version 2.11.0) gibt es keine integrierte Funktionalität zum Verschieben eines bereits vorhandenen Arbeitsbaums. Dies ist ein offizieller Fehler (siehe https://git-scm.com/docs/git-worktree#_bugs) .

Um diese Einschränkung zu umgehen, ist es möglich, manuelle Vorgänge direkt in den .git Referenzdateien auszuführen.

In diesem Beispiel lebt die Haupt Kopie des Repo bei /home/user/project-main und der sekundäre worktree befindet sich unter /home/user/project-1 und wollen wir es bewegen /home/user/project-2

Führen Sie zwischen diesen Schritten keinen git-Befehl aus, da sonst der Garbage Collector ausgelöst wird und die Referenzen auf den sekundären Baum verloren gehen können. Führen Sie diese Schritte ohne Unterbrechung vom Anfang bis zum Ende aus:

  1. Ändern Sie die die worktree .git Datei an die neue Position innerhalb des Hauptbaum zu zeigen. Die Datei /home/user/project-1/.git sollte nun Folgendes enthalten:

    gitdir: /home/user/project-main/.git/worktrees/project-2
    
  2. Benennen Sie die worktree innerhalb des .git Verzeichnis des Hauptprojekt , das von der worktree des Verzeichnisses zu bewegen, die dort vorhanden ist :

    $ mv /home/user/project-main/.git/worktrees/project-1 /home/user/project-main/.git/worktrees/project-2
    
  3. Ändern Sie die Referenz in /home/user/project-main/.git/worktrees/project-2/gitdir , dass sie auf den neuen Speicherort /home/user/project-main/.git/worktrees/project-2/gitdir . In diesem Beispiel hätte die Datei den folgenden Inhalt:

    /home/user/project-2/.git
    
  4. Verschieben Sie schließlich Ihren Arbeitsbaum an den neuen Speicherort:

    $ mv /home/user/project-1 /home/user/project-2
    

Wenn Sie alles richtig gemacht haben, sollte das Auflisten der vorhandenen Arbeitsbäume auf den neuen Speicherort verweisen:

$ git worktree list
/home/user/project-main  23f78ad [master]
/home/user/project-2     78ac3f3 [branch-name]

Es sollte jetzt auch sicher sein, git worktree prune .



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow