고양이hyebin
개발 중 전전전 커밋을 수정해야 할 때
August 6, 2024

개발을 하다가 커밋을 수정해야 할 일이 생겼다. 새로운 커밋으로 넣기에는 깔끔하지 않아서 이전 커밋을 지우려고 했지만, 현재 커밋과 3개 정도 떨어져 있다!

그래서 해당 커밋으로 이동한 후 커밋 내용을 수정하는 방법을 찾아보았다.

rebase 시작

git rebase -i HEAD~N

N은 수정하고자 하는 커밋이 마지막 커밋으로부터 몇 번째인지를 나타낸다. 나는 최근 3개의 커밋을 포함한 범위를 가져왔다.

rebase 편집기에서 수정할 커밋 선택

pick <hash1> Commit message 1
edit <hash2> Commit message 2
pick <hash3> Commit message 3

리베이스 편집기가 열리면 수정하려는 커밋 라인 앞의 pickedit로 변경 후 편집기를 저장하고 닫는다.

💡명령어들의 기능

pick : 커밋을 사용하겠다는 명령
reword : 커밋 메시지를 변경하는 명령어

edit : 커밋 메시지 뿐만 아니라 커밋의 작업 내용도 변경할 수 있는 명령어
squash : 해당 커밋을 이전 커밋과 합치는 명령어

fixup : 해당 커밋을 이전 커밋과 합치는 명령어지만, 커밋 메시지는 합치지 않는다
drop : 커밋 히스토리에서 커밋을 삭제하는 명령어

그리고 Git이 해당 커밋에서 작업을 멈춘다. (ESC를 누르고 :wq로 저장 후 닫아준다)

💡 Vim에서 저장하고 닫기

편집기 저장: Esc 키를 누른 후, :w를 입력하고 Enter 키를 누릅니다.
편집기 닫기: Esc 키를 누른 후, :q를 입력하고 Enter 키를 누릅니다.

저장하고 닫기: Esc 키를 누른 후, :wq를 입력하고 Enter 키를 누릅니다.

Git이 해당 커밋에서 멈추면 파일을 수정, git add 사용 후 명령어 입력

수정할 파일을 편집하고 git add를 사용하여 스테이징한 후 위 명령어를 실행한다.

이 명령어는 현재 커밋을 수정하는 데 사용된다.

git commit --amend

rebase 재개 명령어 입력

Git이 다음 커밋으로 이동하면서 리베이스를 계속 진행한다.

git rebase --continue