Sök…
Syntax
- git worktree add [-f] [--detach] [--checkout] [-b <new-branch>] <path> [<branch>]
- git worktree prune [-n] [-v] [- expire <expire>]
- git arbetslista [- porslin]
parametrar
Parameter | detaljer |
---|---|
-f - kraft | Som standard lägger till vägrar att skapa ett nytt arbetsträd när <branch> redan är utcheckat av ett annat arbetsträd. Det här alternativet åsidosätter den skyddet. |
-b <new-branch> -B <new-branch> | Med add, skapa en ny gren med namnet <new-branch> från <branch> och kolla <new-branch> i det nya arbetsträdet. Om <branch> utelämnas är standardvärdet HEAD . Som standard vägrar -b vägrar att skapa en ny gren om den redan finns. -B åsidosätter denna skydd och återställer <new-branch> till <branch> . |
--lösgöra | Ta bort HEAD i det nya arbetsträdet med lägg till. |
- [no-] kassan | Som standard lägger till checkar ut <branch> , men - --no-checkout kan användas för att undertrycka kassan för att göra anpassningar, till exempel att konfigurera gles kassa. |
-n - torrkörning | Ta inte bort någonting med katrinplommon; rapportera bara vad det skulle ta bort. |
--porslin | Med lista, mata ut i ett enkelt att analysera format för skript. Detta format kommer att förbli stabilt i Git-versioner och oavsett användarkonfiguration. |
-v - ordos | Rapportera alla borttagningar med beskärning. |
- expire <time> | Med katrinplommon ska du endast löpa ut oanvända träd som är äldre än <time> . |
Anmärkningar
Se den officiella dokumentationen för mer information: https://git-scm.com/docs/git-worktree .
Med hjälp av en arbetsyta
Du har rätt mitt i arbetet med en ny funktion, och din chef kommer att kräva att du fixar något omedelbart. Du kanske vanligtvis vill använda git stash
att lagra dina ändringar tillfälligt. Men vid denna tidpunkt är ditt arbetande träd i obehag (med nya, flyttade och borttagna filer, och andra bitar och bitar strödda runt) och du vill inte störa dina framsteg.
Genom att lägga till en arbetsyta skapar du ett tillfälligt länkat arbetsträd för att fixa nödläget, ta bort det när du är klar och sedan återuppta din tidigare kodningssession:
$ 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
OBS: I det här exemplet finns fixingen fortfarande i nödfixeringsgrenen. Vid denna punkt vill du förmodligen git merge
eller git format-patch
och sedan ta bort nödfixeringsgrenen.
Flytta en arbetsbord
För närvarande (från version 2.11.0) finns det ingen inbyggd funktionalitet för att flytta en redan befintlig arbetsyta. Detta listas som ett officiellt fel (se https://git-scm.com/docs/git-worktree#_bugs) .
För att komma runt denna begränsning är det möjligt att utföra manuella operationer direkt i .git
referensfilerna.
I det här exemplet är repokopianens huvudkopia bor på /home/user/project-main
och den sekundära arbetsgruppen finns på /home/user/project-1
och vi vill flytta den till /home/user/project-2
.
Utför inte något git-kommando mellan dessa steg, annars kan avfallssamlaren utlösas och referenserna till det sekundära trädet kan gå förlorade. Utför dessa steg från början till slutet utan avbrott:
Ändra bordsskivans
.git
fil för att peka på den nya platsen i huvudträdet. Filen/home/user/project-1/.git
ska nu innehålla följande:gitdir: /home/user/project-main/.git/worktrees/project-2
Byt namn på arbetsbordsrutan inuti
.git
katalogen för huvudprojektet genom att flytta arbetsbords katalogen som finns där:$ mv /home/user/project-main/.git/worktrees/project-1 /home/user/project-main/.git/worktrees/project-2
Ändra referensen inuti
/home/user/project-main/.git/worktrees/project-2/gitdir
att peka på den nya platsen. I det här exemplet skulle filen ha följande innehåll:/home/user/project-2/.git
Slutligen flytta din arbetsyta till den nya platsen:
$ mv /home/user/project-1 /home/user/project-2
Om du har gjort allt på rätt sätt bör listan över de befintliga arbetsytorna referera till den nya platsen:
$ git worktree list
/home/user/project-main 23f78ad [master]
/home/user/project-2 78ac3f3 [branch-name]
Det bör nu också vara säkert att köra git worktree prune
.