Vous êtes au milieu du développement d’une nouvelle fonctionnalité quand le patron arrive soudainement avec un bug urgent à corriger. Que faites-vous ?
La plupart des gens utiliseraient probablement git stash pour ranger le code à moitié écrit dans un tiroir, puis changeraient de branche pour corriger le bug.
Mais que se passe-t-il si vos modifications impliquent des configurations d’environnement massives, ou si le changement de branche provoque la contamination croisée de node_modules et des Artefacts de Compilation (Build Artifacts) ? C’est suffisant pour vous donner envie de casser votre clavier.
C’est là que Git Worktree vient à la rescousse !
Qu’est-ce que Git Worktree ?
Vous pouvez voir le fonctionnement de Git comme la “rénovation d’une maison”.
Avec la commande traditionnelle git branch, lorsque vous changez de branche, tous les meubles de la pièce disparaissent instantanément sous vos yeux et se réorganisent automatiquement pour convenir à une autre tâche.
Bien que cela fasse gagner de l’espace, l’inconvénient est la “contamination de l’environnement”. Vous devez ranger votre vaisselle sale dans l’armoire avant de pouvoir changer ; et après le changement, l’odeur de graisse des travaux précédents pourrait encore flotter dans l’air.
D’un autre côté, Git Worktree, c’est comme construire directement une maison identique sur le terrain vague d’à côté.
En termes simples, le principe sous-jacent de Git est :
“Une âme (base de données .git), plusieurs corps physiques (répertoires de travail).”
Vous pouvez posséder simultanément une “succursale de développement de fonctionnalités” et une “succursale de réparation d’urgence”. Votre main gauche écrit de la logique IA dans la Fenêtre A, tandis que votre main droite corrige des bugs dans la Fenêtre B, sans qu’aucun côté n’interfère avec l’autre. C’est le véritable développement parallèle.
Guide Pratique de Worktree
Pour maintenir votre état de « flow » pendant le développement, la structure des répertoires et la configuration de l’environnement sont essentielles.
1. Gestion des Répertoires Parallèles : Ne Construisez pas de Succursales à l’Intérieur du Siège Principal
De nombreuses personnes utilisant Worktree pour la première fois créent maladroitement le nouveau répertoire à l’intérieur du dossier original du projet. Ne faites jamais cela ! Cela va plonger Git dans un désordre récursif infini. La bonne façon de construire un Git Worktree est de :
Placer le siège principal (main) et la succursale de la tâche (feature) parallèlement l’un à l’autre.
# Exécutez la création du Worktree depuis le siège principal, mais placez le répertoire du Worktree en dehors du répertoire original du projet
git worktree add ../my-app-feat-ai dev-branch
La structure de vos répertoires devrait ressembler à ceci :
- my-project/ # Paquet global
- main-repo/ # Siège principal stable
- feat-ai-search/ # Nouvelle succursale en construction
2. Isolation de la Configuration de l’Environnement : Donnez à Chaque Succursale sa Propre Âme
Puisque les répertoires du projet sont séparés, vos fichiers de configuration .env peuvent aussi être séparés.
Vous pouvez vous connecter à une base de données de test dans feat-ai-search, tout en conservant la base de données de développement originale dans main. De cette façon, lorsque vous changez de fenêtre, vous n’avez même pas à modifier les détails de connexion.
Après être entré dans le répertoire du Worktree, vous utilisez directement les variables d’environnement de ce répertoire Worktree spécifique pour le développement, sans avoir à faire de changement d’environnement ou de reconstruction. Ce sentiment de “pouvoir s’y mettre et commencer à travailler immédiatement” est vraiment fantastique.
Flux de Travail de Fusion (Merge) de Worktree
Après avoir terminé le développement dans un Worktree, le flux de travail est en fait identique à celui d’une branche traditionnelle, avec juste une action supplémentaire de “démolition”.
| Étapes du Flux de Travail | Description |
|---|---|
| 1. Commit & Push à la Succursale | Vous devez aller physiquement à la succursale pour valider le travail. |
| 2. Inspection au Siège Principal (Merge) | Vous pouvez retourner sur main pour fusionner, ou ouvrir une Pull Request (PR) directement. |
| 3. Démolition Élégante (Remove) | Une fois la tâche accomplie, ne supprimez pas directement le dossier ; utilisez une commande Git pour le démanteler : git worktree remove ../feat-ai-search |
Boum ! La cabane temporaire du Worktree est démolie, l’espace disque est récupéré, et votre siège principal reste impeccablement propre.
Guide pour Éviter les Pièges de Worktree
Bien que Worktree soit très utile, il y a encore quelques obstacles auxquels il faut faire attention :
| Élément | Description |
|---|---|
| Ne déplacez pas aveuglément le siège principal | Parce que Worktree enregistre des chemins absolus. Si vous renommez le répertoire du siège principal, la succursale Worktree va périr car elle ne pourra pas trouver son “âme”. |
| Pas de double branchement | La même branche ne peut pas être extraite (checked out) simultanément dans deux Worktrees. |
Aspirateur robot prune |
Si vous supprimez maladroitement le dossier en utilisant rm -rf, n’oubliez pas d’exécuter git worktree prune pour nettoyer tous les enregistrements restants dans .git. |
Conclusion : Devrais-je Arrêter d’Utiliser Git Branch ?
Des scénarios différents appellent des méthodes de développement différentes. Il ne s’agit pas pour l’un de remplacer l’autre, mais plutôt de savoir lequel est le plus adapté.
| Scénario | Description |
|---|---|
| Petits ajustements quotidiens | Continuez à utiliser branch ; c’est léger et rapide. |
| Tâches à grande échelle | Par exemple, une refactorisation massive, des ajustements s’étendant sur plusieurs variables d’environnement, ou des tâches nécessitant une collaboration à long terme avec l’IA, l’ouverture d’un Worktree est absolument le meilleur choix. |
Git Worktree est bien plus qu’une simple commande ; c’est un outil puissant qui nous aide à maintenir notre flux de développement. La prochaine fois que vous ferez face à une tâche laborieuse et vaste, essayez d’ouvrir une “succursale Git Worktree” isolée et profitez d’un processus de développement fluide comme jamais auparavant !