Un rêve étrange
Incroyable mais vrai, j’ai revé de Git cette nuit. Et « forcément » comme je rêvais de Git, il y avait aussi @dgageot et @samidalouche.
Sami m’a dit un jour quelque chose comme : « oublie les branches, pense graph ». Sur le coup j’ai compris intellectuellement cette phrase mais pas l’utilité pratique. Le temps passe et voici qu’un nouveau défi Git se présente à mon cerveau – c’est assez fréquent. Hier soir j’aurais exprimé le défi comme ça : je voudrais bien faire un cherry-pick d’un commit précédent dans ma branche, pourrais-je faire un merge et non un cherry-pick ? Un merge d’une branche sur elle-même ? Je m’endors là dessus et j’entends Sami de nouveau : « oublie les branches, pense graph ». Et cette fois ça me parle ! Et cela me pose une autre question : « What if… » je ne connaissais pas le commit en question mais uniquement son effet. David cette fois me parle à l’oreille : « bisect ». Cela fait plusieurs années il me semble que David me « rabâche » les oreilles en conférence avec ce bisect qui permet enfin de faire mieux que d’utiliser Git en première vitesse.
Je me réveille et là plus possible de dormir, il faut que j’essaye ça.
- Merger une branche sur elle-même
- Rechercher un commit
Merger une branche sur elle-même
Je conserve ce titre « merger » mais ce terme me semble de plus en plus inapproprié.
Donc, j’ouvre mon terminal préféré et je me lance :
- Créer un nouveau répertoire suivi par git.
- Repérer un commit en particulier. En pratique un code chat, du genre 3a68fd32ca3b16547c5abb2da52fdf7aed290ee3
- Contredire le commit héros de cette histoire
- git cherry-pick 3a68fd32ca3b16547c5abb2da52fdf7aed290ee3
- Et là , « magie »

Bien sûr un git merge est sans effet puisque ce raccourcis de plusieurs commandes git se censure lui-même. Comme souvent quand on sait faire, la solution à mon problème d’hier soir semble triviale. Je le note quand même dans un petit blog pour pas oublier
.
Rechercher un commit avec git bisect
Maintenant, j’imagine que je ne connais pas le commit que je cherche. En pratique dans mon exemple le commit en question ne fait que créer un fichier. Je veux trouver un commit qui crée ce fichier.
- Créer un fichier shell qui teste si mon fichier existe.
- initialiser git bisect. Je prends l’intervale le plus large : [HEAD premier-commit]
- lancer le run: git bisect run search.sh
Et là c’est juste E-norme ! J’ai trouvé des tas de blogs sur bisect qui finissent comme ça : c’est E-norme. A croire que dans la vie d’un utilisateur de Git c’est une étape mentale qui mérite d’être criée au monde. Je ne résiste pas à l’envie de vous partager la copie d’écran du retour de git.



