Le chapitre 9 de la Pro Git Le livre contient une section sur Suppression d'objets .
Permettez-moi de vous présenter brièvement ces étapes :
git filter-branch --index-filter \
'git rm --cached --ignore-unmatch path/to/mylarge_50mb_file' \
--tag-name-filter cat -- --all
Comme l'option de rebasement décrite précédemment, filter-branch
est une opération de réécriture. Si vous avez un historique publié, vous devrez --force
pousser les nouveaux arbitres.
El filter-branch
est considérablement plus puissante que l'approche rebase
l'approche, car elle
- vous permet de travailler sur toutes les branches/réflexions en même temps,
- renomme les balises à la volée
- fonctionne proprement même s'il y a eu plusieurs commits de fusion depuis l'ajout du fichier
- fonctionne proprement même si le fichier a été (ré)ajouté/supprimé plusieurs fois dans l'histoire d'une (des) branche(s)
- ne crée pas de nouveaux commits sans rapport, mais les copie plutôt en modifiant les arbres qui leur sont associés. Cela signifie que des choses comme les commits signés, les notes de commit, etc. sont préservées.
filter-branch
conserve également des sauvegardes, de sorte que la taille du dépôt ne diminuera pas immédiatement à moins que vous n'expiriez les reflogs et le garbage collect :
rm -Rf .git/refs/original # careful
git gc --aggressive --prune=now # danger
0 votes
Dans mon cas, il ne s'agit pas d'un gros fichier, mais d'un fichier de configuration contenant les crédits de la base de données. J'étudiais git, à l'époque je n'étais pas au courant de .gitignore.
1 votes
Duplicata possible de Comment supprimer/supprimer un gros fichier de l'historique des livraisons dans un dépôt Git ?
1 votes
Connexe aide.github.com/articles/