Skip to main content

[git] 깃 커밋 히스토리에서 용량 큰 파일 찾기


커밋들 중에서 용량 큰 파일들과 커밋 해시를 알아내는 방법이다.



1. 파일 및 blob 목록 출력

아래의 코드를 git에 입력하게 되면 파일이 작은 용량부터 큰 용량 순으로 blob의 해시값이 출력된다.

아래의 코드에서는 2^20 byte (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'

출력 결과

image



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


출력 결과

image



참고자료