Je travaille souvent sur plusieurs fonctionnalités simultanément, ce qui m'amène à cacher les modifications et à les oublier en passant à d'autres tâches. J'ai essayé d'utiliser des hooks git et des alias de terminal comme rappels, mais ils étaient soit trop compliqués, soit faciles à ignorer. J'ai donc dû trouver une meilleure solution.
Cet article a été initialement publié sur mon blog il y a plus d'un an mais j'y reviens sans cesse. Re-partagez-le avec le monde :)
Git stocke les informations sous forme de liste d'instantanés. Un instantané est une version stockée du référentiel à un moment donné. Chaque commit représente un instantané dans le monde git.
L'arborescence de travail est une extraction unique d'une version du projet. Ces fichiers sont extraits de la base de données compressée dans le répertoire Git et placés sur le disque pour que vous puissiez les utiliser ou les modifier. C'est le lieu dans lequel vous effectuez votre travail avant de mettre en scène et de vous engager.
Les arbres de travail Git sont un moyen de gérer plusieurs arbres de travail Git en même temps sans les tracas de git stash. Ils nous permettent de travailler sur des branches en tant que sous-répertoires d'un référentiel, ce qui soulage complètement la difficulté de cacher les modifications lorsqu'une modification urgente et sans rapport est requise.
Le module worktree vous permet d'extraire plusieurs versions du projet dans des sous-répertoires distincts dans le même répertoire racine du référentiel. Prenons par exemple le schéma suivant sur l'approche traditionnelle :
Dans cet exemple, j'ai deux modifications cachées (qui peuvent représenter des centaines de lignes de code) et 3 branches, feature-1, feature-2 et fix -1. Au moment où j'ai fini de travailler sur la branche fix-1 et que je la pousse, mon cerveau serait passé à la tâche suivante et aurait complètement oublié les fonctionnalités précédentes jusqu'à ce qu'on me les rappelle à nouveau.
Au lieu de cela, avec les arbres de travail, cela ressemble à ceci :
Avec les arbres de travail, la structure de répertoires contient chaque arbre de travail (branche) dans un répertoire séparé. Cela me permet de passer de manière transparente d'une branche à une autre en changeant simplement le répertoire dans lequel je travaille actuellement. Mon flux de travail habituel avec cette approche est le suivant :
Lorsque je veux passer d'un arbre de travail à un autre, tout ce que j'ai à faire est soit de créer un arbre de travail différent en utilisant les mêmes étapes si je ne l'ai pas déjà créé, soit simplement d'ouvrir un répertoire différent avec VSCode et de commencer à pirater. immédiatement.
Créer un arbre de travail est aussi simple que d'exécuter git worktree add directory-name branch-name pour les branches existantes ou git worktree add directory-name -b branch-name pour créer une nouvelle branche.
Une fois que vous avez fini de travailler sur une branche, vous pouvez supprimer l'arbre de travail en toute sécurité pour arrêter de polluer votre structure de répertoires. Exécutez simplement git worktree delete directory-name. Cela ne supprime pas les branches sous-jacentes, vous pouvez donc les consulter à nouveau en toute sécurité plus tard.
Les arbres de travail sont des extractions de branches de référentiel, donc les fichiers non suivis ne sont pas copiés. Les fichiers comme .env ne seront pas copiés, alors assurez-vous de les copier après avoir créé un arbre de travail et installé les dépendances le cas échéant.
Notez également que les répertoires créés pour les arbres de travail apparaîtront dans les journaux d'état de git lorsqu'ils seront exécutés dans le répertoire racine du référentiel. Ces pièges ne sont rien pour moi comparés à l’oubli des heures de travail.
Merci d'avoir lu ! Vous pouvez en savoir plus sur mon blog et soutenir mon travail sur les sponsors GitHub !
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3