Log in to leave a comment
No posts yet
Le temps d'un développeur est précieux. Pourtant, nous gaspillons une part importante de ce temps sacré non pas à écrire du code, mais dans le context switching (changement de contexte). Une demande de hotfix urgente surgit en plein développement d'une fonctionnalité, et voilà qu'il faut lancer un git stash, changer de branche, puis revenir plus tard faire un stash pop en gérant les conflits... Ce processus fragmente la concentration même des ingénieurs les plus seniors.
Le Git standard a été conçu pour une gestion d'historique linéaire. Il part du principe que l'on ne fait qu'une seule chose à la fois. Mais la réalité du terrain est complexe. Il faut souvent intégrer les retours de plusieurs revues de code tout en développant de nouvelles fonctionnalités. En 2026, il est temps de reconnaître les limites de Git et de faire évoluer nos outils. La CLI GitButler, nommée but, va au-delà du simple utilitaire de confort : elle change le paradigme de la gestion de version.
L'arme la plus puissante de GitButler est sa capacité à activer plusieurs branches simultanément dans un seul répertoire de travail. C'était une chose impossible avec le Git traditionnel.
Le Git standard ne maintient qu'un seul pointeur HEAD à un instant T. À l'inverse, GitButler utilise une branche spéciale appelée gitbutler/workspace pour maintenir en temps réel la fusion de toutes les branches virtuelles (Lanes) actuellement actives.
| Élément de comparaison | Git Standard (Vanilla) | GitButler (Virtual Branches) |
|---|---|---|
| État de l'espace de travail | Une seule branche à la fois | Coexistence des modifs de plusieurs branches virtuelles |
| Changement de contexte | Stash + Checkout (secondes à minutes) | Instantané (réallocation logique) |
| Gestion des conflits | Interruption du rebase obligatoire | Conflit préservé comme un "état", travail continu possible |
Grâce à cette structure, votre IDE ou votre compilateur perçoit les différentes tâches comme un arbre source unique et cohérent, sans configuration supplémentaire. Cela signifie que le multitâche est possible sans briser votre flux créatif.
Voyons concrètement comment dépasser le simple confort pour accélérer physiquement votre rythme de travail.
Que faites-vous si vous repérez une faute de frappe en plein milieu d'une logique complexe ? Avant, il fallait s'arrêter. Désormais, corrigez-la sur place et tapez simplement but branch new fix-typo. Votre espace de travail reste intact, mais cette modification spécifique (Hunk) est logiquement assignée à une nouvelle branche.
L'historique des commits est un récit destiné à vos collègues. Les étapes intermédiaires brouillonnes doivent être gommées. GitButler a introduit la commande but rub pour éliminer la complexité du rebase -i. C'est une manière de "frotter" (rub) des modifications sur un commit spécifique pour les y absorber. Le commit en question est immédiatement amendé, et les commits supérieurs sont automatiquement restackés (réempilés). Le système "First Class Conflict", qui traite les conflits comme des citoyens de premier rang, permet de ne jamais interrompre le travail à cause d'un conflit de rebase.
Le cœur de la mise à jour 2026 est le marquage. En désignant un commit spécifique comme marque active, toutes les modifications ultérieures s'accumulent automatiquement à cet endroit.
Cela révèle toute sa puissance lors de l'utilisation d'agents IA comme Claude Code ou Cursor. Les multiples fragments de code générés par l'agent sont automatiquement fusionnés en une unité sémantique propre, garantissant que l'historique conserve toujours sa forme finale. L'ennui de devoir gérer un autosquash après un commit --fixup disparaît totalement.
La plus grande crainte lors de l'adoption d'un nouvel outil est la perte de données. GitButler propose un Oplog bien plus sophistiqué que le reflog de Git. Il enregistre un snapshot complet avant chaque modification de données. Même si vous supprimez un commit par erreur ou ratez un rebase, un simple but undo restaure parfaitement l'état, jusqu'à la résolution des conflits.
De plus, pour les power users, toutes les commandes supportent le flag JSON (but status -j). Combiné à jq, vous pouvez créer en quelques lignes des scripts d'automatisation pour ne pousser que certaines branches virtuelles spécifiques en fonction des résultats de la CI.
but config target origin/main.but setup.L'inconfort du stash et du checkout que nous utilisons quotidiennement n'était en fait pas une fatalité. Ne pliez pas votre pensée aux limites de vos outils.
Le travail parallèle via les branches virtuelles et le nettoyage intuitif de l'historique offrent au développeur une véritable sérénité psychologique. La certitude de pouvoir annuler une erreur et de collaborer sans rompre son flux de travail crée une réelle différence de productivité. Essayez de taper but status dans votre terminal dès maintenant. Dès que vous verrez à quel point votre répertoire de travail peut devenir logique et libre, vous ne pourrez plus revenir à l'inefficacité du passé.