문제 해결
4. 응용 변형 예제
4.1 큰 blob 찾기 실행
빌드 산출물이나 로그를 실수로 커밋해 저장소가 무거워졌는지 확인합니다.
git count-objects -vH
git rev-list --objects --all | \
git cat-file --batch-check='%(objecttype) %(objectname) %(objectsize) %(rest)' | \
awk '$1=="blob"{print $3, $2, $4}' | sort -rn | head -3실행하면 count: 6·size: 4.76 KiB 요약 뒤에 1000000 ... big.bin 이 맨 위로 올라옵니다. 1MB 짜리 파일이 바로 눈에 띕니다. blob 해시를 알면 2.4 의 filter-repo 로 그 경로만 지정해 히스토리에서 제거합니다.
4.2 merge·rebase 충돌은 --abort 로 원상 복구
병합·rebase 결과가 예상과 다르거나 충돌이 너무 크면 무리해서 풀지 말고 시작 전으로 돌립니다.
git merge feature
git status --short
git merge --abortgit rebase main
git rebase --abortCONFLICT (content): Merge conflict... 뒤 status --short 는 UU price.txt 를 보여주고, rebase 는 hint: ... run "git rebase --abort". 줄로 다음 명령을 알려줍니다. 급할수록 힌트부터 읽고 --abort 로 시작 전 상태로 완전히 되돌립니다.
4.3 한글 파일명이 깨져 보일 때
새 파일 이름이 한글인데 git status 에 "\355\225..." 같은 8진수로 나오면 표시 설정 문제입니다.
git config core.quotepath false
git status --short파일 자체는 멀쩡합니다. core.quotepath false 는 터미널에 한글을 그대로 보여주도록 git 의 표시 방식만 바꿉니다.
4.4 줄 끝 차이로 파일 전체가 바뀐 것처럼 보일 때
CRLF 로 저장된 파일을 LF 로 고치면 diff --stat 이 두 줄 다 바뀐 것처럼 보여줍니다.
git diff --stat
git diff -w --stat-w 를 붙이면 출력이 비어 실제 내용 변경이 없다는 것이 드러납니다. 저장소 차원에서 줄 끝을 통일하려면 .gitattributes(레슨 07)를 씁니다.