되돌리기
4. 응용 변형 예제
4.1 커밋 메시지 오타를 바로 고치기
직전 커밋 메시지에 오타를 냈다면 새 커밋을 쌓지 않고 고칩니다.
git commit --amend -m "올바른 메시지"아직 push 하지 않았을 때만 씁니다. push 후에는 해시가 바뀌어 동료의 저장소와 어긋납니다.
4.2 untracked 정리 전 항상 드라이런
빌드 산출물이나 임시 파일을 지울 때는 실수로 소스 파일까지 지우지 않도록 먼저 확인합니다.
git clean -n -fd
git clean -fd-n 은 지울 목록만 보여주고 아무것도 지우지 않습니다. 목록이 예상과 같을 때만 -fd 를 실행합니다.
4.3 checkout 대신 switch·restore 로 의도를 분명히
같은 checkout 이라도 인자에 따라 브랜치 이동인지 파일 복원인지 헷갈립니다.
| 옛 명령 | 새 명령 |
|---|---|
git checkout <branch> |
git switch <branch> |
git checkout -- <file> |
git restore <file> |
git checkout <commit> -- f |
git restore --source=<commit> f |
명령 이름만 봐도 무엇을 되돌리는지 알 수 있어 실수가 줄어듭니다.
4.4 untracked 파일까지 포함해 stash
새로 만든 파일과 기존 파일 수정을 한 번에 치워둘 때는 -u 를 빼먹지 않습니다.
git stash push -u -m "새 설정 파일 포함"-u 없이 stash 하면 새 파일은 작업 트리에 그대로 남아 다른 브랜치로 이동할 때 섞일 수 있습니다.
4.5 병합 커밋을 되돌릴 때 부모 지정
병합 커밋은 부모가 둘이라 기준 없이 revert 하면 git 이 거부합니다.
git revert -m 1 <병합 커밋 해시>-m 1 은 첫 번째 부모(보통 main)를 기준으로 삼아, 병합으로 들어온 변경만 되돌립니다.