Parfois dans la vie, les dépôts Git sont comme nous, ils deviennent obèses. Parfois aussi,  nous voulons supprimer le vieil historique.

Voici comment supprimer tout l’historique d’un dépôt à partir d’un commit hash.

# checkout le status du dépôt git à partir du commit "f"; création d'une branch "temp"
git checkout --orphan temp <f> 
# créons un nouveau commit qui deviendra le commit originel
git commit -m "new root commit" 
# maintenant, on rebase l'historique depuis "f" du master sur la branche "temp"
git rebase --onto temp <f> master 
# on n'a plus besoin de la branche temporaire
git branch -D temp 
# on pousse
git push -f

Les opérations suivantes sont en bonus, pour maintenir votre dépôt en top forme.

# suppression des objets sans référence
git prune --progress 
# Garbage collect agressif, ça peut mettre du temps
git gc --aggressive

Partager c'est la vie

Leave a Comment