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:

  1. Ä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
    
  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
    
  3. Ä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
    
  4. 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 .



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow