Zoeken…


Syntaxis

  • git worktree add [-f] [--detach] [--checkout] [-b <new-branch>] <path> [<branch>]
  • git worktree prune [-n] [-v] [--expire <expire>]
  • git werkboom lijst [--porcelain]

parameters

Parameter Details
-f - dwingen Weigert standaard om een nieuwe werkboom te maken wanneer <branch> al is uitgecheckt door een andere werkboom. Deze optie overschrijft die beveiliging.
-b <new-branch> -B <new-branch> Maak met add een nieuwe tak met de naam <new-branch> beginnend bij <branch> en bekijk <new-branch> in de nieuwe werkboom. Als <branch> wordt weggelaten, wordt standaard HEAD . Standaard weigert -b een nieuwe branch te maken als deze al bestaat. -B heft deze beveiliging op en zet <new-branch> naar <branch> .
--detach Met toevoegen verwijdert u HEAD in de nieuwe werkboom.
- [nee-] afrekenen Voeg standaard --no-checkout <branch> , maar --no-checkout kan worden gebruikt om de check --no-checkout te onderdrukken om aanpassingen aan te brengen, zoals het configureren van sparse-checkout.
-n - droogloop Verwijder met Prune niets; meld gewoon wat het zou verwijderen.
--porselein Met lijst, uitvoer in een gemakkelijk te parseren indeling voor scripts. Dit formaat blijft stabiel in Git-versies en ongeacht de gebruikersconfiguratie.
-v - verbose Met snoeien, rapporteer alle verwijderingen.
- verlopen <time> Met snoeien vervallen alleen ongebruikte werkende bomen ouder dan <time> .

Opmerkingen

Raadpleeg de officiële documentatie voor meer informatie: https://git-scm.com/docs/git-worktree .

Een werkboom gebruiken

Je zit midden in het werken aan een nieuwe functie en je baas eist dat je meteen iets oplost. Je wilt meestal git stash gebruiken om je wijzigingen tijdelijk op te slaan. Op dit moment bevindt uw werkende boom zich echter in een staat van wanorde (met nieuwe, verplaatste en verwijderde bestanden en andere stukjes en beetjes rond) en wilt u uw voortgang niet verstoren.

Door een werkboom toe te voegen, maakt u een tijdelijke gekoppelde werkboom om de noodoplossing te maken, verwijdert u deze als u klaar bent en hervat u uw eerdere coderingssessie:

$ 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

OPMERKING: In dit voorbeeld bevindt de fix zich nog steeds in de noodfixvertakking. Op dit punt wil je waarschijnlijk git merge of git format-patch en daarna de emergency-fix branch verwijderen.

Werkboom verplaatsen

Momenteel (vanaf versie 2.11.0) is er geen ingebouwde functionaliteit om een reeds bestaande werkboom te verplaatsen. Dit wordt vermeld als een officiële bug (zie https://git-scm.com/docs/git-worktree#_bugs) .

Om deze beperking te omzeilen, is het mogelijk om handmatige bewerkingen rechtstreeks in de .git referentiebestanden uit te voeren.

In dit voorbeeld woont de hoofdkopie van de repo bij /home/user/project-main en bevindt de secundaire werkboom zich in /home/user/project-1 en we willen deze verplaatsen naar /home/user/project-2 .

Voer geen git-commando uit tussen deze stappen, anders kan de garbage collector worden geactiveerd en kunnen de verwijzingen naar de secundaire boom verloren gaan. Voer deze stappen vanaf het begin tot het einde zonder onderbreking uit:

  1. Wijzig het .git-bestand van de .git om naar de nieuwe locatie in de hoofdstructuur te wijzen. Het bestand /home/user/project-1/.git zou nu het volgende moeten bevatten:

    gitdir: /home/user/project-main/.git/worktrees/project-2
    
  2. Wijzig de naam van de werkboom in de .git directory van het hoofdproject door de map van de worktree die zich daar bevindt te verplaatsen:

    $ mv /home/user/project-main/.git/worktrees/project-1 /home/user/project-main/.git/worktrees/project-2
    
  3. Wijzig de referentie in /home/user/project-main/.git/worktrees/project-2/gitdir om naar de nieuwe locatie te wijzen. In dit voorbeeld zou het bestand de volgende inhoud hebben:

    /home/user/project-2/.git
    
  4. Verplaats ten slotte uw werkboom naar de nieuwe locatie:

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

Als u alles correct hebt gedaan, moet het vermelden van de bestaande werkbomen verwijzen naar de nieuwe locatie:

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

Het zou nu ook veilig moeten zijn om git worktree prune .



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow