Recherche…


Syntaxe

  • git worktree ajouter [-f] [--detach] [--checkout] [-b <nouvelle-branche>] <chemin> [<branche>]
  • git worktree prune [-n] [-v] [--expire <expire>]
  • git worktree list [--porcelain]

Paramètres

Paramètre Détails
-f --force Par défaut, add refuse de créer un nouvel arbre de travail lorsque <branch> est déjà extrait par un autre arbre de travail. Cette option remplace cette sauvegarde.
-b <new-branch> -B <new-branch> Avec add, créez une nouvelle branche nommée <new-branch> partir de <branch> et extrayez <new-branch> dans le nouvel arbre de travail. Si <branch> est omis, la valeur par défaut est HEAD . Par défaut, -b refuse de créer une nouvelle branche si elle existe déjà. -B remplace cette sauvegarde, en réinitialisant <new-branch> à <branch> .
--détacher Avec add, détachez HEAD dans le nouvel arbre de travail.
- [no-] checkout Par défaut, add --no-checkout out <branch> , cependant, --no-checkout peut être utilisé pour supprimer la récupération afin de réaliser des personnalisations, telles que la configuration de la récupération partielle.
-n --dry-run Avec le pruneau, ne retirez rien; il suffit de rapporter ce que cela supprimerait.
--porcelaine Avec liste, sortie dans un format facile à analyser pour les scripts. Ce format restera stable pour toutes les versions de Git et quelle que soit la configuration de l'utilisateur.
-v --verbose Avec prune, signalez tous les retraits.
--expire <time> Avec Prune, n'expire que les arbres de travail inutilisés plus anciens que <time> .

Remarques

Voir la documentation officielle pour plus d'informations: https://git-scm.com/docs/git-worktree .

Utiliser un worktree

Vous êtes en train de travailler sur une nouvelle fonctionnalité, et votre patron vient vous demander de réparer quelque chose immédiatement. Vous pouvez généralement utiliser git stash pour stocker vos modifications temporairement. Cependant, à ce stade, votre arbre de travail est dans un état de désordre (avec des fichiers nouveaux, déplacés et supprimés, ainsi que d’autres éléments) et vous ne souhaitez pas perturber votre progression.

En ajoutant un worktree, vous créez une arborescence de travail liée temporaire pour effectuer le correctif d'urgence, supprimez-le une fois terminé, puis reprenez votre session de codage antérieure:

$ 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

Remarque: dans cet exemple, le correctif est toujours dans la branche de correctif d'urgence. À ce stade, vous souhaiterez probablement git merge ou git format-patch et ensuite supprimer la branche de correctif d'urgence.

Déplacement d'un worktree

Actuellement (à partir de la version 2.11.0), aucune fonctionnalité intégrée ne permet de déplacer un Worktree existant. Ceci est répertorié comme un bug officiel (voir https://git-scm.com/docs/git-worktree#_bugs) .

Pour contourner cette limitation, il est possible d'effectuer des opérations manuelles directement dans les fichiers de référence .git .

Dans cet exemple, la copie principale du dépôt réside dans /home/user/project-main et le worktree secondaire se trouve dans /home/user/project-1 et nous voulons le déplacer dans /home/user/project-2 .

N'effectuez aucune commande git entre ces étapes, sinon le ramasse-miettes peut être déclenché et les références à l'arborescence secondaire peuvent être perdues. Effectuez ces étapes du début jusqu'à la fin sans interruption:

  1. Modifiez le fichier .git du .git pour qu'il pointe vers le nouvel emplacement dans l'arborescence principale. Le fichier /home/user/project-1/.git devrait maintenant contenir les éléments suivants:

    gitdir: /home/user/project-main/.git/worktrees/project-2
    
  2. Renommez le worktree à l'intérieur du répertoire .git du projet principal en déplaçant le répertoire worktree qui s'y trouve:

    $ mv /home/user/project-main/.git/worktrees/project-1 /home/user/project-main/.git/worktrees/project-2
    
  3. Modifiez la référence dans /home/user/project-main/.git/worktrees/project-2/gitdir pour pointer vers le nouvel emplacement. Dans cet exemple, le fichier aurait le contenu suivant:

    /home/user/project-2/.git
    
  4. Enfin, déplacez votre worktree vers le nouvel emplacement:

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

Si vous avez tout fait correctement, la liste des worktrees existants doit faire référence au nouvel emplacement:

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

Il devrait maintenant aussi être sûr de lancer git worktree prune .



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow