Featured image of post Pourquoi utiliser git stash à chaque changement de branche ? Qu'est-ce que Git Worktree ? Différences entre Git Worktree et Git Branch ? Comment créer un flux de développement multithread efficace avec Git Worktree

Pourquoi utiliser git stash à chaque changement de branche ? Qu'est-ce que Git Worktree ? Différences entre Git Worktree et Git Branch ? Comment créer un flux de développement multithread efficace avec Git Worktree

En plein développement d'une fonctionnalité et un Bug urgent survient ? Arrêtez de cacher du code avec git stash ! Présentation des concepts clés de Git Worktree, de ses différences avec Git Branch, de l'organisation des répertoires et des meilleures pratiques avec AI Agent.

Avez-vous déjà vécu cette situation ? Vous développez une nouvelle fonctionnalité complexe et soudain un Bug urgent apparaît, nécessitant une correction immédiate.

Pour changer de branche, vous êtes contraint d’exécuter à contre-cœur un git stash pour cacher votre code incomplet. Après avoir corrigé le Bug et être revenu, vous devez exécuter prudemment git stash pop, risquant parfois le cauchemar des conflits de code (conflict).

En réalité, Git propose depuis longtemps un outil extrêmement puissant pour résoudre ce problème : Git Worktree.

Dites adieu aux changements de branche chaotiques et au Stash, et adoptez le développement multithread avec Worktree

Cet article vous explique en détail son fonctionnement interne et son utilisation pratique.

Quelle est la différence entre Git Worktree et Git Branch ?

Pour comprendre Git Worktree, clarifions d’abord sa différence avec Git Branch.

On peut comparer la gestion de versions à la lecture d’un livre papier :

  • Commit est l’édition / la version du livre
  • Branch est le marque-page inséré à une page donnée
  • Worktree est le bureau de travail sur lequel vous ouvrez le livre

Dans l’approche traditionnelle, nous ne disposons que d’un seul bureau. Chaque fois que nous voulons changer de marque-page, nous devons ranger tous les papiers en cours de modification sur la table ou les cacher dans un tiroir (c’est le rôle de git stash).

En revanche, Git Worktree vous permet de posséder plusieurs bureaux de travail indépendants en même temps.

Élément de comparaison Git Branch Git Worktree
Concept de Workspace Partage un seul répertoire physique de travail Possède plusieurs répertoires physiques de travail indépendants
Coût du changement de branche Nécessite un commit, stash ou sauvegarde Sans stash ; il suffit de changer de répertoire
Isolation & Sécurité Les fichiers non commités peuvent causer des conflits ou résidus Répertoires totalement isolés ; les modifications n’interfèrent pas
Historique des modifications Partage l’historique de Commit et les branches Git Partage l’historique de Commit et les branches Git

La branche active, la zone de transit (Staging Area) et les modifications non commitées de chaque Worktree sont complètement indépendantes, mais elles partagent l’ensemble de l’historique des Commits et des branches.

Branch est le marque-page de version, tandis que Worktree est le bureau de travail physique

Ainsi, lorsque vous devez changer de tâche, il vous suffit d’ouvrir un autre dossier sans toucher du tout à votre état de développement actuel.

Comment commencer à utiliser Git Worktree ?

Lors de l’adoption de Git Worktree dans des projets réels, une bonne organisation des répertoires rend le développement bien plus fluide.

Il est recommandé de conserver le répertoire du projet initialement cloné avec git clone comme le quartier général propre main, et de placer les nouveaux répertoires Worktree à l’extérieur du projet (par exemple ../my-app-worktrees), évitant ainsi les erreurs de scan récursif par les outils de développement.

Le flux de commandes habituel est le suivant :

Flux Commande
1. Créer un nouveau Worktree et simultanément une nouvelle branche git worktree add ../my-app-worktrees/feature-login -b feature-login
2. Afficher la liste de tous les Worktrees actifs git worktree list

Git Worktree est particulièrement adapté à la gestion des tâches de développement d’un AI Agent.

Vous pouvez attribuer un répertoire Worktree indépendant à AI Agent pour qu’il modifie et teste le code en toute liberté, tandis que les développeurs humains effectuent la revue de code (Review) et les tests dans un autre Worktree.

Donnez un Worktree indépendant à l’AI Agent pour que le développement IA et la revue humaine s’exécutent en parallèle

Les deux fonctionnent dans leurs répertoires physiques respectifs, de manière sûre et claire.

Comment fusionner et nettoyer en toute sécurité après le développement ?

Une fois le développement terminé dans un Worktree indépendant, comment fusionner les résultats et faire le nettoyage ?

Gardez un concept important en tête : Le répertoire Worktree lui-même n’a pas besoin d’être fusionné, ce qui doit vraiment être fusionné, c’est la Branch.

Il vous suffit de revenir au répertoire de travail main et d’exécuter git merge sur la branche de fonctionnalité correspondante pour terminer l’intégration.

Pour le nettoyage, suivez la procédure standard en deux étapes :

Étape Commande
1. Supprimer le répertoire physique du Worktree git worktree remove ../my-app-worktrees/feature-login
2. Supprimer la branche de fonctionnalité terminée git branch -d feature-login

Supprimez d’abord le répertoire Worktree, puis supprimez la Branch

Veillez à toujours utiliser la commande git worktree remove pour le nettoyage, au lieu de supprimer manuellement le dossier dans le gestionnaire de fichiers.

Quels sont les pièges courants lors de l’utilisation de Git Worktree ?

Bien que Git Worktree soit extrêmement pratique, il comporte quelques pièges auxquels il faut prêter attention.

Piège 1 : Les modifications non commitées seront perdues

Bien que la suppression d’un Worktree ne supprime pas la Branch elle-même, si vous avez encore des modifications non commitées dans ce répertoire, la suppression forcée du répertoire Worktree entraînera la perte définitive de ces modifications.

Piège 2 : Conflit d’occupation de branche

Le mécanisme de protection de Git n’autorise pas le Checkout de la même Branch simultanément dans deux Worktrees différents. Si vous essayez de basculer vers une branche déjà occupée dans un second Worktree, Git bloquera l’action et affichera un message d’erreur.

Forcer la suppression d’un Worktree entraîne la perte des modifications non sauvegardées par Commit

En maîtrisant ces caractéristiques et principes, vous éviterez facilement ces pièges.

Conclusion

Grâce à Git Worktree, nous pouvons dire adieu aux changements de branche chaotiques et au processus git stash, et réaliser un véritable développement multithread.

La prochaine fois que vous faites face à une correction de Bug urgente, que vous développez plusieurs fonctionnalités en parallèle ou que vous attribuez des tâches de code à un AI Agent, essayez d’ouvrir un nouveau bureau de travail !

Reference

All rights reserved,未經允許不得隨意轉載
Généré avec Hugo
Thème Stack conçu par Jimmy