Git supprime les gros fichiers qui ont été validés

Préface : lors de la soumission et du transfert de modifications locales vers l'entrepôt, un fichier volumineux a été soumis par erreur, ce qui a entraîné un rapport d'erreur indiquant que le fichier push est trop volumineux. Il est donc nécessaire de supprimer le fichier volumineux qui a été validé avant de le transmettre.

Si vous connaissez le chemin du fichier ou du dossier à supprimer, vous pouvez commencer à partir de l'étape 4

1. Effectuer une opération gc sur l'entrepôt

 $ git gc

2. Interroger des fichiers volumineux

git verify-pack -v .git/objects/pack/pack-*.idx | sort -k 3 -g | tail -5

 Notez que ceci est interrogé à partir du dossier .git, il doit donc être exécuté dans le répertoire racine de l'entrepôt

Le résultat affiché est un fichier volumineux et les 6 premiers identifiants sont l'identifiant de soumission du fichier. 

3. Obtenez le nom du fichier correspondant à l'identifiant

git rev-list --objects --all | grep id名称

Exemple : git rev-list --objects --all | grep 78b35d

 Après l'identifiant se trouve le chemin complet du fichier

4. Supprimez le fichier (si vous connaissez le chemin du fichier, vous pouvez directement exécuter la commande suivante)

git filter-branch --force --prune-empty --index-filter 'git rm -rf --cached --ignore-unmatch 文件名' --tag-name-filter cat -- --all

comme:

git filter-branch --force --prune-empty --index-filter 'git rm -rf --cached --ignore-unmatch CustomPhysics2DIntProject2022.3/Build/01 - Version/UnityPlayer.dll' --tag-name- filtre chat -- --tous

Si vous souhaitez supprimer un répertoire, vous pouvez directement renseigner le répertoire, comme par exemple :

git filter-branch --force --prune-empty --index-filter 'git rm -rf --cached --ignore-unmatch CustomPhysics2DIntProject2022.3/Build' --tag-name-filter cat -- --all

Si une exception se produit : Impossible de réécrire les branches : vous avez des modifications non planifiées.

Exécuter une commande :

git stash

supprimer à nouveau après

 5. Supprimez le pointeur vers l'ancien commit

rm -rf .git/refs/original/

6. Supprimer le journal

rm -rf .git/logs/

7. Abandonnez la possibilité de toute récupération d'objets non associés

git reflog expire --expire=now --all

8. Nettoyez les déchets et reconditionnez

git repack -A -d    //重新打包

git gc --aggressive --prune=now //清理垃圾,重新打包

9. Poussez la télécommande de force

git push --force
git push --force --all

10. Nettoyage de plusieurs branches

git checkout branchName    //切换分支,多个分支需要分别清理

Je suppose que tu aimes

Origine blog.csdn.net/smile_otl/article/details/131955241
conseillé
Classement