문제 해결
5. 자주 하는 실수 (Tip)
❌ 실수 1: reset --hard 전에 status·log 확인을 건너뜀
reset --hard 는 작업 트리까지 지우는 되돌릴 수 없는 명령입니다. 실행 전에 git status 와 git log 로 무엇이 사라지는지 먼저 봅니다.
❌ 실수 2: 키 유출 시 revert 만으로 안심함
revert 는 최신 상태에서만 내용을 지웁니다. 과거 커밋에는 값이 그대로 남으므로 키를 반드시 폐기해야 합니다.
❌ 실수 3: filter-repo 전에 팀에 알리지 않음
히스토리를 다시 쓰면 모든 팀원의 로컬 저장소가 어긋납니다. force push 전에 미리 공지하고, 이후 전원이 새로 clone 해야 합니다.
❌ 실수 4: bisect 의 good·bad 를 반대로 지정
good 커밋은 반드시 버그가 없던 과거 시점이어야 합니다. 반대로 지정하면 git bisect 가 엉뚱한 커밋을 가리킵니다.
❌ 실수 5: blame 만 보고 "왜" 까지 안다고 착각함
blame 은 누가 언제 바꿨는지만 보여줍니다. 바꾼 이유는 그 커밋 메시지나 연결된 PR 설명을 함께 읽어야 알 수 있습니다.
❌ 실수 6: log -S 와 -G 를 같은 것으로 생각함
-S 는 문자열 등장 횟수 변화를, -G 는 패턴과 매치되는 줄의 추가·삭제를 찾습니다. 문자열은 그대로인데 다른 부분이 바뀐 줄은 -G 로만 잡힙니다.
❌ 실수 7: 충돌 중 터미널을 강제로 닫음
병합·rebase 도중 강제 종료하면 .git/index.lock 이 남을 수 있습니다. 다시 열었을 때는 --abort 로 먼저 상태를 정리합니다.
❌ 실수 8: 한글 파일명 깨짐을 파일 시스템 문제로 오해함
\355\225... 같은 출력은 파일이 손상된 것이 아니라 git 표시 설정입니다. core.quotepath false 로 해결됩니다.
❌ 실수 9: 줄 끝 차이를 실제 내용 변경으로 오해함
CRLF·LF 가 섞이면 diff 가 파일 전체를 바꾼 것처럼 보입니다. git diff -w 로 먼저 진짜 변경인지 확인합니다.
❌ 실수 10: gc 를 충돌 해결 명령으로 착각함
git gc 는 저장소를 압축하는 정리 명령이지, merge·rebase 충돌을 풀어주지 않습니다. 충돌은 직접 해결하거나 --abort 합니다.