Pour faire le diff entre deux branches :
# Diff entre le HEAD des deux branches
git diff master..ma-branch
# Diff entre le point de bifurcation de "ma-branch" dans master et le HEAD de "ma-branche"
git diff master...ma-branch
En étape (4) j'aurai réécrit l'historique de la branche sur la branche elle-même en faisant git push --force origin ma-branche
à la place de git push --force origin master
.
Cela a plusieurs avantages :
1) Je ne force pas la réécriture du master
à chaque fois, ce qui obligerait tout le monde à mettre à jour son HEAD si des merges sont fréquents de cette branche vers lui.
2) Cela permet encore d'effectuer une PR/MR pour une review de code.
3) Cela permet de travailler sur la branche sans perturber les autres.
4) Je peux rebase
ma branche autant de fois que nécessaire sans impact sur master
.
Très pratique pour nettoyer toutes les feature branches récupérées au fil du temps. Bref, le nettoyage se fait en deux commandes :
# Récupérer de tout le contenu distant (hors tags)
git pull --all
# Suppression des branches locales
git remote update origin --prune
Un article intéressant sur les "branch prediction" ou en d'autres termes, la fonctionnalité de prédiction du prochain calcul d'un micro-processeur. Ceci expliqué via une doc Java et C++ qui montrent qu'une liste triée permet de mieux prédire le prochain code et donc l'accès à l'information se fait plus vite.