J'ai un arbre git commeComment supprimer VRAIMENT une branche git (c'est-à-dire supprimer tous ses objets/commits)?
A---B---C topic
/
D---E---F---G master <--
Je voudrais supprimer le sujet et tous les objets qu'il contient.
Je note l'ID SHA de sujet, puis tapez:
git branch -D topic
git gc # <-- I also tried prune here...
git checkout -b temp <SHA1 ID of topic>
Après la dernière commande, je vous attendre à obtenir une erreur (quelque chose comme « ID d'objet inexistant ... » ou somth comme ça.). Cependant, il n'y a pas d'erreur et gitk montre la même structure d'arbre que ci-dessus? Qu'est-ce qui me manque? - Je pensais que gc/prune est supposé supprimer tous les objets inaccessibles?
La réponse de VonC explique les faits. Si vous voulez connaître la raison "philosophique", c'est simplement que git essaie très fort de ne pas vous laisser accidentellement supprimer quoi que ce soit. 'git gc' par lui-même est destiné à être une opération de nettoyage/réemballage. Vous devez dire quelque chose d'un peu plus fort pour l'effacer potentiellement du travail récent. – Cascabel