홈 › Git › 03 / 8

되돌리기

섹션 7진행 0 / 8

4. 응용 변형 예제

4.1 커밋 메시지 오타를 바로 고치기

직전 커밋 메시지에 오타를 냈다면 새 커밋을 쌓지 않고 고칩니다.

bash
git commit --amend -m "올바른 메시지"

아직 push 하지 않았을 때만 씁니다. push 후에는 해시가 바뀌어 동료의 저장소와 어긋납니다.

4.2 untracked 정리 전 항상 드라이런

빌드 산출물이나 임시 파일을 지울 때는 실수로 소스 파일까지 지우지 않도록 먼저 확인합니다.

bash
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 를 빼먹지 않습니다.

bash
git stash push -u -m "새 설정 파일 포함"

-u 없이 stash 하면 새 파일은 작업 트리에 그대로 남아 다른 브랜치로 이동할 때 섞일 수 있습니다.

4.5 병합 커밋을 되돌릴 때 부모 지정

병합 커밋은 부모가 둘이라 기준 없이 revert 하면 git 이 거부합니다.

bash
git revert -m 1 <병합 커밋 해시>

-m 1 은 첫 번째 부모(보통 main)를 기준으로 삼아, 병합으로 들어온 변경만 되돌립니다.