Développement

Git avancé — Les commandes que vous n'utilisez pas assez

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 quel
  • reword — modifier le message
  • squash — fusionner avec le commit précédent
  • drop — 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.

// Commentaires (0)

Connectez-vous pour laisser un commentaire.

Aucun commentaire pour le moment.