Git Worktrees : l'outil indispensable pour le développement IA en 2025

Le brief IA que les pros lisent chaque soir
Les 7 actus IA du jour, décryptées en 5 min. Gratuit.
Inclus dès l'inscription : notre sélection des meilleurs guides & comparatifs IA.
Choisis ton rythme
Gratuit · Pas de spam · Désabonnement en 1 clic
Révolutionner le développement IA avec Git Worktrees
Imaginez-vous en train de travailler sur une branche de fonctionnalités avec Claude Code, un agent IA qui analyse votre code pour réécrire le système d'authentification. Vous êtes en pleine progression lorsque soudain, un message Slack vous interrompt : la production est en panne et un correctif urgent est nécessaire sur la branche principale. Dans un flux de travail traditionnel, cela vous obligerait à mettre de côté vos modifications, à changer de branche, et à perdre tout le contexte que votre agent IA avait construit. Vous devriez ensuite corriger le bug, pousser les changements, et revenir à votre tâche initiale, en passant du temps à réorienter l'agent sur ce qu'il faisait.
Les problèmes se compliquent encore plus si vous exécutez deux agents simultanément dans le même répertoire. Imaginez deux agents modifiant le fichier package.json en même temps, générant des modifications sur les mêmes fichiers. Le second agent pourrait écraser silencieusement les modifications du premier, sans avertissement ni erreur, conduisant à un travail corrompu que vous ne découvririez qu'une heure plus tard lorsque les tests échoueraient de manière inexplicable.
Les Git worktrees éliminent toute cette classe de problèmes. Bien qu'ils ne soient pas une nouvelle invention — cette fonctionnalité existe dans Git depuis la version 2.5, sortie en 2015 — la vague de codage IA de 2025–2026 les a rendus essentiels. Un répertoire .git, plusieurs répertoires de travail, chacun sur sa propre branche, chacun invisible aux autres. Chaque agent IA obtient son propre espace de travail isolé. Le correctif obtient son propre espace de travail. Rien ne se chevauche.
Selon les statistiques récentes, 51 % des développeurs professionnels utilisent désormais des outils d'intelligence artificielle quotidiennement dans leur travail. Cependant, seulement 17 % d'entre eux estiment que ces outils ont réellement amélioré la collaboration au sein de leurs équipes. Cet écart significatif n'est pas dû à une lacune des outils eux-mêmes, mais plutôt à un problème d'infrastructure. Les équipes ont adopté ces agents IA sans mettre en place une couche de flux de travail adéquate. Ce guide vise à combler cette lacune.
Comprendre les Git Worktrees
Un dépôt Git standard a un seul répertoire de travail — le dossier où vos fichiers résident et où vous modifiez le code. Pour travailler sur une autre branche, vous devez y passer, ce qui change tous les fichiers dans ce répertoire pour correspondre à la branche. Si vous avez du travail non validé, vous devez d'abord le mettre de côté. Si votre agent IA est en train de travailler, vous l'interrompez.
Les Git worktrees brisent cette contrainte. Un worktree est un répertoire séparé extrait du même dépôt. Vous pouvez en avoir autant que nécessaire, chacun sur sa propre branche, tous coexistant simultanément sur votre système de fichiers.
- my-project/ ← répertoire de travail principal (branche : main)
- my-project-feat-auth/ ← worktree lié (branche : feat/auth)
- my-project-feat-api/ ← worktree lié (branche : feat/api)
- my-project-hotfix-login/ ← worktree lié (branche : hotfix/login)
Tous ces répertoires partagent le même dossier .git. Ils partagent l'historique, les objets et les commits. Mais chacun a ses propres fichiers extraits, son propre index et son propre état de travail. Un agent modifiant des fichiers dans my-project-feat-auth/ ne peut pas voir ou toucher quoi que ce soit dans my-project-feat-api/. Ce sont des répertoires physiquement séparés qui partagent un backend git.
Pourquoi cela est-il préférable à plusieurs clones ? L'alternative naïve aux worktrees consiste à cloner le dépôt deux fois et à travailler dans différents répertoires de clone. Cela fonctionne, mais cela a de réels coûts : vous dupliquez l'ensemble du dépôt sur le disque, l'historique git n'est pas partagé entre les clones, les commits dans un clone ne sont pas immédiatement visibles dans un autre, et il n'y a pas de coordination entre eux au niveau git. Avec les worktrees, vous clonez une fois. Chaque worktree supplémentaire n'ajoute que le coût des fichiers extraits, pas une autre copie de l'historique complet.
Les sept commandes qui couvrent tout ce dont vous avez besoin pour gérer les worktrees :
- git worktree add <path> -b <branch> : Crée un nouveau worktree sur une nouvelle branche.
- git worktree add <path> <existing-branch> : Extrait une branche existante dans un nouveau worktree.
- git worktree list : Affiche tous les worktrees actifs avec leurs branches et les hachages de commit.
- git worktree lock <path> : Empêche un worktree d'être supprimé (utile pendant qu'un agent est en cours d'exécution).
- git worktree unlock <path> : Libère le verrou.
- git worktree remove <path> : Supprime un worktree proprement (la branche est préservée).
- git worktree prune : Nettoie les métadonnées des worktrees qui ont été supprimés manuellement.
C'est l'ensemble complet des commandes. Tout le reste de cet article est un flux de travail construit sur ces sept commandes.
Prérequis : Git 2.5 ou supérieur. Exécutez git --version pour vérifier. Tout système moderne (macOS, Linux, Windows avec WSL ou Git Bash) est livré avec une version supérieure à 2.5.
Étape 1 : Partir d'un dépôt propre
Les worktrees fonctionnent mieux lorsque votre branche principale est propre. Commitez ou mettez de côté tout travail en cours avant de créer votre premier worktree.
Vérifiez que vous avez un répertoire de travail propre
Si vous avez du travail non validé, validez-le :
git add . && git commit -m "checkpoint: work in progress"
Étape 2 : Créer votre premier worktree
Créez un nouveau worktree à ../myapp-feat-auth sur une nouvelle branche feat/auth. Remplacez "myapp" par le nom de votre projet et "feat/auth" par le nom de votre branche :
git worktree add -b feat/auth ../myapp-feat-auth main
Vérifiez qu'il a été créé
git worktree list
Vous devriez voir une sortie comme ceci :
/home/user/myapp abc1234 [main]
/home/user/myapp-feat-auth abc1234 [feat/auth]
Les deux répertoires existent. Les deux contiennent les mêmes fichiers de la branche principale. À partir de ce moment, toutes les modifications que vous apportez dans myapp-feat-auth/ restent sur feat/auth et sont complètement isolées de main.
Étape 3 : Configurer l'environnement dans le nouveau worktree
C'est l'étape que la plupart des tutoriels omettent. Un worktree est un nouveau répertoire de travail. Il n'a pas automatiquement votre fichier .env, vos node_modules installés, ou votre environnement virtuel Python. Vous devez les configurer explicitement.
cd ../myapp-feat-auth
- Copiez les fichiers d'environnement qui sont ignorés par git. Les fichiers .env, .env.local, et similaires ne sont pas suivis dans git — ils n'apparaîtront pas automatiquement dans le nouveau worktree :
cp ../myapp/.env .env
cp ../myapp/.env.local .env.local 2>/dev/null || true
- Projet Node.js : installez les dépendances. Chaque worktree est un répertoire de travail indépendant — node_modules du parent ne se transfère pas.
- Projet Python : créez et activez un environnement virtuel :
python -m venv .venv && source .venv/bin/activate && pip install -r requirements.txt
Étape 4 : Vérifier que le worktree est isolé
Depuis l'intérieur du nouveau worktree :
- Cela devrait afficher : feat/auth
- Effectuez un changement de test :
echo "// test" >> test-isolation.js
- Cela ne montre le changement que dans ce worktree. Passez au répertoire principal et vérifiez qu'il n'est pas affecté :
ls test-isolation.js 2>/dev/null || echo "Not here -- isolation confirmed"
C'est tout ce dont vous avez besoin pour commencer. Le worktree est actif. Tout agent que vous ouvrez dans ce répertoire opère uniquement sur feat/auth.
Une étude de cas réelle
L'exemple le plus clair documenté de l'utilisation des git worktrees pour le développement parallèle piloté par l'IA provient du Microsoft Global Hackathon 2025.
Tamir Dresher, un responsable technique, a été confronté à un problème que tout le monde rencontrant des agents IA finit par rencontrer : trop de fonctionnalités, trop peu de temps, et aucun moyen de travailler sur plus d'une chose à la fois sans un changement de contexte constant. Créer plusieurs clones du dépôt était encombrant. Changer de branche détruisait le contexte de l'agent IA. Quelque chose devait changer.
La solution a été d'utiliser les git worktrees pour créer ce que Dresher a décrit comme une équipe de développement IA virtuelle. Chaque fonctionnalité a obtenu son propre worktree. Chaque worktree a obtenu sa propre fenêtre VS Code. Chaque fenêtre exécutait son propre agent IA. Le rôle de Dresher a évolué de développeur à responsable technique : définir les tâches, examiner les résultats, guider les agents qui étaient bloqués, et fusionner le travail terminé.
La configuration ressemblait à ceci :
- myapp/ ← fenêtre principale : coordination et examens
- myapp-feat-authentication/ ← Agent 1 : mise en œuvre du flux OAuth2
- myapp-feat-api-endpoints/ ← Agent 2 : construction des points de terminaison REST
- myapp-bugfix-login-crash/ ← Agent 3 : correction d'un bug en production
Chaque fenêtre VS Code était complètement indépendante. Les serveurs de langage, les linters et les exécuteurs de tests fonctionnaient par fenêtre. Les agents ne touchaient jamais aux fichiers des autres. Lorsque l'Agent 1 a terminé, Dresher a examiné le diff, l'a approuvé et a ouvert une demande de tirage (PR) depuis cette branche — le même flux de travail que pour l'examen d'une PR d'un ingénieur humain.
Trois avantages concrets que Dresher a documentés lors du hackathon :
-
Pas de perte de contexte. Chaque agent IA maintenait le contexte complet de sa tâche spécifique. Passer d'une fonctionnalité à une autre signifiait changer de fenêtres VS Code, pas de branches, pas de mises de côté, pas de redémarrages d'agents. La compréhension de l'agent de ce qu'il construisait restait intacte.
-
Différents outils pour différents emplois. Comme chaque fenêtre était indépendante, Dresher a exécuté Roo dans une fenêtre pour un développement rapide de fonctionnalités et GitHub Copilot avec Visual Studio dans une autre pour déboguer des problèmes complexes. Mélanger les outils entre les tâches était trivial.
-
Gestion propre des branches. Si une fonctionnalité devait être abandonnée, fermer la fenêtre et supprimer le worktree prenait dix secondes. Les autres agents n'étaient pas affectés.
Le modèle qui a émergé de ce hackathon est désormais une meilleure pratique documentée dans la communauté de codage IA.
Exécution d'agents IA parallèles avec les worktrees
La mécanique du flux de travail parallèle complet comporte quatre étapes : configurer les worktrees, donner à chaque agent son contexte, exécuter les agents et enregistrer régulièrement des points de contrôle.
Étape 1 : Script de création des worktrees
Ne créez pas les worktrees manuellement à chaque fois. Un script garantit que chaque worktree obtient la même configuration — fichiers d'environnement, installation des dépendances et point de départ propre.
Prérequis : Git 2.5+, Bash (macOS/Linux/WSL)
Comment exécuter : Enregistrez comme create-worktree.sh dans la racine de votre projet, exécutez chmod +x create-worktree.sh, puis ./create-worktree.sh feat/auth-redesign main.
#!/usr/bin/env bash
# create-worktree.sh
# Crée un worktree isolé pour une tâche d'agent IA
# Utilisation : ./create-worktree.sh [base-branch]
# Exemple : ./create-worktree.sh feat/auth-redesign main
set -euo pipefail
BRANCH="${1:?Usage: $0 [base-branch]}"
BASE="${2:-main}"
REPO_ROOT="$(git rev-parse --show-toplevel)"
REPO_NAME="$(basename "$REPO_ROOT")"
# Remplacez les barres obliques dans
Brief IA — L'actualité IA en français
L'essentiel de l'actualité de l'intelligence artificielle, décrypté et expliqué chaque jour.