개발을 하다가 커밋을 수정해야 할 일이 생겼다. 새로운 커밋으로 넣기에는 깔끔하지 않아서 이전 커밋을 지우려고 했지만, 현재 커밋과 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
리베이스 편집기가 열리면 수정하려는 커밋 라인 앞의 pick
을 edit
로 변경 후 편집기를 저장하고 닫는다.
💡명령어들의 기능
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