실수로 가장 최근 커밋이 포함 된 거대한 바이너리 파일을 Git 저장소에 추가, 커밋 및 푸시했습니다.
Git에서 해당 커밋에 대해 생성 된 / 만든 객체를 제거하여 .git
디렉터리가 다시 정상적인 크기로 축소되도록하려면 어떻게해야합니까?
편집 : 답변 해 주셔서 감사합니다. 몇 가지 해결책을 시도했습니다. 작동하지 않았습니다. 예를 들어 GitHub의 파일은 기록에서 파일을 제거했지만 .git
디렉터리 크기는 줄어들지 않았습니다.
$ BADFILES=$(find test_data -type f -exec echo -n "'{}' " \;)
$ git filter-branch --index-filter "git rm -rf --cached --ignore-unmatch $BADFILES" HEAD
Rewrite 14ed3f41474f0a2f624a440e5a106c2768edb67b (66/66)
rm 'test_data/images/001.jpg'
[...snip...]
rm 'test_data/images/281.jpg'
Ref 'refs/heads/master' was rewritten
$ git log -p # looks nice
$ rm -rf .git/refs/original/
$ git reflog expire --all
$ git gc --aggressive --prune
Counting objects: 625, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (598/598), done.
Writing objects: 100% (625/625), done.
Total 625 (delta 351), reused 0 (delta 0)
$ du -hs .git
174M .git
$ # still 175 MB :-(