Git avancé — Les commandes que vous n'utilisez pas assez
La plupart des développeurs n'utilisent que 10% des capacités de Git. Voici les commandes qui vont transformer votre workflow.
1. Rebase interactif (git rebase -i)
Le rebase interactif permet de réécrire l'historique avant de pusher.
# Réécrire les 5 derniers commits
git rebase -i HEAD~5
Dans l'éditeur, vous pouvez :
pick— garder le commit tel quelreword— modifier le messagesquash— fusionner avec le commit précédentdrop— supprimer le commit
# Exemple : fusionner 3 commits de fix en un seul propre
pick a1b2c3 feat: add user authentication
squash d4e5f6 fix: typo in auth controller
squash g7h8i9 fix: missing validation
2. git bisect — Trouver le commit bugué
# Démarrer la recherche binaire
git bisect start
git bisect bad # Le commit actuel est bugué
git bisect good v2.0.0 # Cette version fonctionnait
# Git checkout un commit intermédiaire automatiquement
# Testez et dites à Git si c'est bon ou mauvais
git bisect good # ou git bisect bad
# Git trouvera le commit exact qui a introduit le bug
# Terminer
git bisect reset
3. git worktree — Plusieurs branches en parallèle
Plus besoin de stash quand vous devez basculer de branche !
# Créer un worktree pour une branche hotfix
git worktree add ../neotoad-hotfix hotfix/critical-bug
# Travailler dans le deuxième répertoire sans toucher au premier
cd ../neotoad-hotfix
git commit -am "fix: critical bug"
git push
# Supprimer le worktree quand terminé
git worktree remove ../neotoad-hotfix
4. git stash — Utilisation avancée
# Stash avec un message descriptif
git stash push -m "WIP: article editor refactor"
# Stash uniquement les fichiers non-trackés
git stash --include-untracked
# Lister les stashs
git stash list
# Appliquer un stash spécifique sans le supprimer
git stash apply stash@{2}
# Créer une branche depuis un stash
git stash branch feature/article-editor stash@{0}
5. git cherry-pick
# Appliquer un commit spécifique sur la branche courante
git cherry-pick abc1234
# Cherry-pick une plage de commits
git cherry-pick abc1234..def5678
# Cherry-pick sans committer (pour modifier)
git cherry-pick --no-commit abc1234
6. git reflog — La machine à remonter le temps
# Voir TOUT l'historique des refs, même les commits "perdus"
git reflog
# Restaurer un commit après un reset --hard "accidentel"
git reset --hard HEAD@{3}
Le reflog est votre filet de sécurité ultime. Rien n'est vraiment perdu tant que vous n'avez pas fait de GC.
7. Aliases Git productifs
# ~/.gitconfig
[alias]
lg = log --oneline --graph --decorate --all
undo = reset HEAD~1 --mixed
save = !git add -A && git commit -m 'SAVEPOINT'
wip = !git add -u && git commit -m "WIP"
aliases = config --get-regexp alias
Conclusion
Git est bien plus qu'un outil de sauvegarde. Maîtriser rebase -i, bisect et worktree vous fera gagner des heures chaque semaine.
Aucun commentaire pour le moment.