[git] 깃 커밋 히스토리에서 용량 큰 파일 찾기
커밋들 중에서 용량 큰 파일들과 커밋 해시를 알아내는 방법이다.
1. 파일 및 blob 목록 출력
아래의 코드를 git에 입력하게 되면 파일이 작은 용량부터 큰 용량 순으로 blob의 해시값이 출력된다.
아래의 코드에서는
2^20byte (1 MiB) 이상 크기의 파일들만 출력되며, 알맞게 변경해서 쓰면 된다.
git rev-list --objects --all |
git cat-file --batch-check='%(objecttype) %(objectname) %(objectsize) %(rest)' |
sed -n 's/^blob //p' |
sort --numeric-sort --key=2 |
awk '$2 >= 2^20'
출력 결과

2. blob이 포함된 commit 알아내기
아래 코드에 blob의 해시값을 넣어 git에 입력하게 되면 해당 blob이 포함된 커밋들이 최신부터 오래된 순서로 출력된다.
blob=해시값
git rev-list --all |
while read commit; do
if git ls-tree -r $commit | grep -q $blob; then
echo $commit
fi
done
출력 결과
