Expédier des sites statiques ou des bibliothèques de composants signifie souvent jonglerdeux succursales urgentes-un correctif pour le CSS de production et une branche de fonctionnalités pour la page de destination de la semaine prochaine. Cloner le référentiel deux fois brûle le disque et la surcharge mentale.Arbres de travail Gitvous permettent d'extraire plusieurs branches côte à côte à partir d'une seule base de données d'objets, ce qui est idéal lorsque votre « deuxième machine » est en réalité unenuage Mac minivous vous connectez en SSH pour les vérifications Safari et les builds rapides.
Pourquoi les équipes HTML/CSS adoptent les arbres de travail
Flux traditionnel : stocker, valider, extraire, exécuternpm installencore une fois - détruit le contexte alors que vous aviez seulement besoin de modifier unCSS héros de 12 lignesfichier. Les arbres de travail conservent chaque branche dans son propre répertoire tout en partageant l'historique, afin que vous puissiez quitternpm run devs'exécutant dans le dossier A et exécutantnpm run builddans le dossier B sans saut de branchement constant.
Sur Apple Silicon, les installations répétées coûtent toujours du temps : même avec des objets Git partagés, les performances de chaque arbre de travailnode_modulespeut consommer250 à 400 Mopour une modeste pile Vite + Tailwind. Planifier trois arbres actifs signifie budgétiser approximativement1,2 Gojuste pour les dépendances avant de compter le résultat de la build : raisonnable sur un Mac cloud avec des centaines de gigaoctets gratuits, pénible sur un ordinateur portable de 256 Go contenant également des photos et des images Docker.
Commandes de base que vous utiliserez quotidiennement
À partir du chemin de votre référentiel principal, ajoutez une extraction frère :
git fetch origin
git worktree add ../site-hotfix origin/hotfix/css-hero
git worktree list
Supprimez l'arborescence d'une branche terminée après la fusion :
git worktree remove ../site-hotfix
Si Git se plaint de modifications non validées, validez ou transmettez--forceune fois que vous êtes certain que rien de précieux ne vit dans ce répertoire. Élaguez les métadonnées obsolètes avecgit worktree prunesi vous avez supprimé des dossiers manuellement par erreur.
Worktree vs clone complet vs dépôt séparé
| Approche | Disque pour les objets Git | Complexité | Idéal pour |
|---|---|---|---|
| Deuxième clone complet | Doublons .git | Faible | Machines à entrefer |
| Arbre de travail | Magasin d'objets partagé | Moyen | Branches parallèles, même origine |
| Dépôt séparé (fork) | Histoire indépendante | Élevé | Le fournisseur abandonne avec des télécommandes divergentes |
Serveurs de développement, ports et onglets Safari
Chaque arbre de travail est une racine de système de fichiers distincte, vous pouvez donc exécuternpx vite --port 5173en un etnpx vite --port 5174dans un autre. Documentez la cartographie dansREADMEou une table Notion partagée :correctif → 5173, cartes de fonctionnalités → 5174. Les onglets épinglés par Safari survivent mal aux sessions à distance, alors ajoutez les deux URL à vos favoris ou utilisez un petit script shell qui fait écho au lien correct après le démarrage du serveur.
Lorsque vous combinez des arbres de travail avec les modèles d'accès deSSH contre VNC sur le cloud Mac, vous conservez généralement les commandes de développement de longue durée dans les volets SSH et ouvrez VNC uniquement lorsque vous avez besoin d'une inspection Safari au niveau des pixels sur deux branches à la fois.
Liste de contrôle de nettoyage avant de supprimer des chemins
- Confirmez la branche fusionnée ou abandonnée dans l’interface utilisateur de votre hôte Git.
- Arrêtez les observateurs (
Ctrl+C) donc aucun descripteur de fichier ne persiste. - Courir
git worktree remove <path>au lieu derm -rflorsque cela est possible. - Supprimer les parasites
dist/ou.vitemet en cache si vous avez supprimé l’arborescence manuellement. - Récupérez de l'espace avec
npm cache verifysi les installations ont gonflé pendant les expériences.
Les équipes qui sautent la troisième étape laissent parfois des entrées fantômes.git worktree list, ce qui confond les scripts CI qui parcourent les arbres avec un30 secondestimeout : la propreté des métadonnées est importante pour l’automatisation autant que pour les humains.
Les caches Prettier, ESLint et Stylelint se trouvent sous chaque arbrenode_modules/.cache; si vous créez un lien symbolique entre les caches des arbres de travail, vous risquez de contaminer les règles de formatage lorsqu'une branche dépasse les plugins majeurs. Plus sûr : acceptez les caches en double jusqu'à ce que la pression du disque force un changement de politique (généralement au-dessus).85 %utilisation du volume sur les tableaux de bord de surveillance.
Pour les pipelines d'exportation statiques (Eleventy, Astro static), exécuteznpm run builddans chaque arbre de manière séquentielle pendant les jours de lâchers abondants ; les versions parallèles peuvent rivaliser pour le processeur sur les hôtes M4 Pro lorsque quatre arbres apparaissent chacunhuitfils de travail. Accélérateur avec--max-old-space-size=4096sur Node si vous observez des avertissements de pression de la mémoire du noyau dans Console.app.
Pourquoi exécuter Worktrees sur un Mac loué
Un dédiéApple Silicon Mac minidans le cloud se comporte comme un casier de build partagé : tout le monde y pousse des branches, ajoute des arbres de travail avec des chemins prévisibles sous/Users/ci/sites/, et les démolit après examen. Votre ordinateur portable conserve un seul clone pour la saisie locale ; les installations parallèles lourdes se produisent là où la puissance et le SSD sont moins chers par heure.
Si vous câblez toujours des clés SSH, commencez parle guide de configuration Mac à distanceavant la création d'un arbre de travail de script : une authentification stable surpasse les dispositions de répertoires intelligentes.
Les magasins adaptés à l'automatisation emballent souventgit worktree adddans une cible Makefile ou unScript shell de 30 lignesça marche aussinpm ciet imprime l'URL de développement choisie. Normaliser sur/var/tmp/worktrees/$BRANCH_SLUGévite les collisions lorsque cinq ingénieurs partagent un nœud ; la limace est tronquée en48 caractèrespour rester sous les limites de chemin macOS lorsque Webpack écrit des fichiers temporaires profonds.
Les sous-modules et les arbres de travail interagissent subtilement : chaque arbre peut avoir besoin du siengit submodule update --initréussissez, alors intégrez-le dans votre script après chaque ajout. Les dépôts d'actifs adossés à LFS devraient fonctionnergit lfs pullpar arbre ; sauter cette étape produit de mystérieux 404 dans Safari pour les vidéos de héros, même lorsque les builds CSS réussissent.
Lorsque CI publie des liens d'aperçu, marquez chaque URL avec le chemin de l'arbre de travail dans votre message Slack :hotfix → ~/wt/hero- donc les réviseurs se connectent en SSH dans le bon dossier avant d'exécuter des tests. Un changement de contexte enregistré de trois minutes multiplié parquatre évaluateurspaie le coût de la minute de location plusieurs fois au cours de la semaine de sortie.
L'observabilité aide : expédiez un petitworktree-health.shqui imprime l'espace libre sur le disque, actifnodePID et le derniercinqlignes de chaque journal du serveur de développement. Cron tous les15 minutespendant les semaines difficiles ; quand un arbre se coince, vous pouvezgit worktree remove --forcesachant qu'il ne reste aucun processus Webpack orphelin.
Note de sécurité pour les hôtes partagés : chaque arbre de travail hérite des mêmes assistants d'identification que le dépôt principal, donc faites pivoter les clés de déploiement si un entrepreneur avait accès au shell. Paire par arbre.env.localfichiers avecchmod 600et évitez de copier des secrets entre branches : les clés API divulguées dans une arborescence de correctifs supprimés sont toujours lisibles jusqu'à ce que le répertoire soit supprimé.
Enfin, instantané du disque avant les refactorisations majeures :tmutil localsnapshotsur macOS ou une archive tar rapide dedist/vous donne une restauration si une étape de purge CSS détruit les actifs dans chaque arborescence active lors d'une mauvaise exécution de script.
FAQ
Combien d’arbres de travail dois-je conserver sur un Mac ?
La plupart des équipes limitent les arbres de travail actifs entre trois et six par dépôt sur un disque de 256 Go. Chaque arbre de travail crée toujours ses propres fichiers de travail et node_modules, sauf si vous utilisez des outils avancés, alors surveillez le disque avec df -h chaque semaine.
Les arbres de travail partagent-ils des objets Git ?
Oui. Tous les arbres de travail attachés au même référentiel partagent une base de données d'objets .git, ce qui permet d'économiser de l'espace par rapport au clonage du référentiel plusieurs fois. Ils ne partagent pas les dossiers node_modules non validés.
Puis-je exécuter deux serveurs Vite à la fois ?
Oui, attribuez des ports explicites tels que --port 5173 et --port 5174 et documentez-les dans un runbook d'équipe. Safari peut ouvrir les deux URL localhost côte à côte pour des différences visuelles.
Les arbres de travail Git ne remplacent pas une bonne dénomination des branches, mais ils suppriment les frictions liées au changement de contexte constant, en particulier lorsqu'ils sont associés à un Mac mini silencieux et toujours actif qui reflète votre environnement Safari de production. La location de cette capacité à la journée vous permet de créer des voies HTML/CSS parallèles pendant les semaines critiques, puis de supprimer des arborescences et de rétrograder vos dépenses lorsque la version est livrée.
Les branches parallèles méritent un disque parallèle
Louez un Mac mini cloud pour les arbres de travail partagés, les critiques Safari et les serveurs de développement de longue durée. Choisissez une région proche, puis suivez le guide SSH pour automatiser les ajouts et les suppressions.