Le WordPress d'aujourd'hui, décodé pour les développeurs

Outils & workflow

git worktree pour deux branches d’un projet WordPress, sans dupliquer le dossier

Passer d'une correction urgente à une fonctionnalité en cours sans stash ni clone séparé, en gardant deux répertoires de travail liés au même dépôt.

Par WordPress Développement • 12 septembre 2021 • 4 min de lecture • Aucun commentaire
git worktree pour deux branches d'un projet WordPress, sans dupliquer le dossier

Travailler sur une fonctionnalité en cours et devoir, sans prévenir, corriger un bug urgent en production : cette situation revient régulièrement dans le quotidien d’un développeur WordPress, et la réponse habituelle consiste à mettre de côté le travail en cours avec git stash, changer de branche, corriger, puis restaurer le travail interrompu. Cette méthode fonctionne, mais elle interrompt le contexte de travail et multiplie les allers-retours mentaux. La commande git worktree permet d’éviter cette interruption. Ce billet ne traite pas de la stratégie de branches elle-même, seulement de cet outil local.

Le principe : plusieurs répertoires liés à un seul dépôt

Un dépôt Git classique associe un unique répertoire de travail à son dossier .git. La commande git worktree permet de créer un second répertoire, positionné sur une branche différente, qui partage le même historique et les mêmes objets Git que le répertoire principal, sans dupliquer l’ensemble du dépôt sur le disque.

Mise en œuvre sur un projet WordPress en cours

  1. Depuis le répertoire principal du projet, sur la branche de la fonctionnalité en cours, créer un nouveau répertoire lié à la branche de production.
  2. Basculer dans ce nouveau répertoire pour traiter la correction urgente, sans quitter ni modifier l’état du répertoire principal.
  3. Committer et pousser la correction depuis ce second répertoire, indépendamment du travail en cours ailleurs.
  4. Revenir au répertoire principal, où la fonctionnalité en cours reste exactement dans l’état laissé avant l’interruption.
  5. Supprimer le répertoire temporaire une fois la correction fusionnée, sans impact sur le dépôt principal.
git worktree add ../projet-correctif main
cd ../projet-correctif
# correction du bug, commit, push
cd ../projet-principal
git worktree remove ../projet-correctif

Ce que cette méthode change concrètement au quotidien

L'essentiel à retenir : Un même dépôt peut avoir plusieurs répertoires de travail actifs simultanément ; Fini le stash improvisé pour traiter une urgence en plein développement ; Chaque répertoire garde son propre environnement local sans conflit

La différence la plus notable avec un stash classique tient à l’absence totale d’interruption du contexte de travail. Les fichiers modifiés dans le répertoire principal restent visibles et modifiables pendant toute la durée de l’intervention dans l’autre répertoire, y compris si l’éditeur de code reste ouvert sur les deux dossiers simultanément. Aucun risque d’oublier un stash non restauré après plusieurs jours, un incident classique sur un projet où plusieurs urgences s’enchaînent.

  • Chaque répertoire de travail peut conserver son propre environnement local, notamment ses propres fichiers ignorés non versionnés.
  • Les deux répertoires partagent le même historique de commits et les mêmes branches distantes.
  • Supprimer un répertoire temporaire avec git worktree remove ne supprime jamais l’historique partagé du dépôt.

Les précautions à connaître avant d’adopter cette méthode

Une même branche ne peut pas être extraite simultanément dans deux répertoires de travail différents : Git l’interdit pour éviter des conflits d’écriture. Si un environnement local dépend d’un fichier de configuration spécifique au chemin du dossier, comme une adresse locale enregistrée dans la base de données WordPress, ce paramètre doit être adapté séparément pour chaque répertoire de travail créé.

Un second répertoire de travail coûte moins cher en attention qu’un stash qu’on espère ne jamais oublier.

Un usage qui dépasse la simple urgence

Au-delà des corrections urgentes, cette méthode s’est aussi révélée utile pour comparer visuellement le rendu de deux branches côte à côte, chacune ouverte dans un environnement local distinct, sans avoir à reconstruire une base de données ou réinstaller des dépendances à chaque bascule.

Lister et nettoyer les répertoires actifs

Sur un projet où plusieurs répertoires de travail temporaires s’accumulent au fil des interventions, la commande git worktree list affiche l’ensemble des répertoires liés au dépôt, avec la branche extraite dans chacun. Cette vue d’ensemble évite d’oublier un répertoire créé pour une urgence passée, qui continuerait sinon à occuper de l’espace disque sans utilité réelle.

git worktree list
git worktree prune

La commande prune complète cette gestion en supprimant les références à des répertoires qui auraient été effacés manuellement sur le disque sans passer par la commande remove, une situation qui arrive plus souvent qu’on ne le pense lors d’un nettoyage manuel effectué dans la précipitation.

En résumé

La commande git worktree remplace avantageusement le réflexe du stash improvisé quand une urgence interrompt un travail en cours sur un projet WordPress. Elle permet de garder deux répertoires de travail actifs simultanément, chacun sur sa propre branche, sans dupliquer le dépôt ni interrompre le contexte de travail déjà en place.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Partager :

À propos de l'auteur

WordPress Développement

Développeur WordPress, passionné par Elementor, le FSE et l’automatisation par IA.

Voir tous ses articles

Dans la même veine

À lire aussi