되돌리기
5. 자주 하는 실수 (Tip)
❌ 실수 1: push 한 커밋을 reset 으로 지우려 한다
동료의 저장소와 히스토리가 어긋나 다음 pull 이 꼬입니다. ✅ 이미 공유된 커밋은 reset 대신 revert 로 취소합니다.
❌ 실수 2: reset --hard 전에 status·diff 를 안 본다
되돌릴 수 없는 명령인데 무엇이 사라지는지 모르고 실행합니다. ✅ --hard 앞에는 항상 status 로 무엇이 걸려 있는지 먼저 봅니다.
❌ 실수 3: amend 로 이미 push 한 커밋을 고친다
해시가 바뀌어 동료가 받은 히스토리와 충돌합니다. ✅ amend 는 아직 push 하지 않은 마지막 커밋에만 씁니다.
❌ 실수 4: stash 에 -u 를 빼먹고 새 파일이 남는다
브랜치를 옮겼는데 새로 만든 파일이 그대로 따라와 섞입니다. ✅ untracked 파일도 치우려면 stash push -u 를 씁니다.
❌ 실수 5: stash pop 을 반복해 충돌을 반복 처리한다
같은 파일을 여러 번 stash 하면 pop 순서가 꼬여 충돌이 잦아집니다. ✅ stash 는 쌓아두지 말고 만든 즉시 적용하거나 정리합니다.
❌ 실수 6: clean -fd 를 -n 없이 바로 실행한다
빌드 산출물만 지우려다 커밋 안 한 소스 파일까지 사라집니다. ✅ -n 으로 목록을 본 뒤에만 -fd 를 실행합니다.
❌ 실수 7: 병합 커밋을 -m 없이 revert 하려 한다
부모가 둘이라 git 이 어느 쪽을 기준으로 할지 몰라 오류를 냅니다. ✅ -m 1 로 mainline 을 지정해 revert 합니다.
❌ 실수 8: reset --hard 후 되돌릴 방법이 없다고 포기한다
커밋이 로그에서 사라졌을 뿐 저장소 안에는 한동안 남아 있습니다. ✅ git reflog 로 직전 위치를 찾아 다시 reset --hard 합니다.
❌ 실수 9: restore --staged 만 하고 작업 트리도 원복됐다고 착각한다
스테이징만 풀렸을 뿐 파일 내용은 여전히 수정된 상태입니다. ✅ 작업 트리까지 버리려면 git restore <file> 을 한 번 더 씁니다.
❌ 실수 10: checkout 한 줄로 브랜치 이동과 파일 복원을 섞어 쓴다
인자를 착각해 엉뚱한 파일이 덮어써지거나 브랜치가 바뀝니다. ✅ 이동은 switch, 복원은 restore 로 명령 자체를 나눠 씁니다.