본문 바로가기
Git

깃 (git) 예전 커밋 (commit) 에 변경사항을 추가하고 싶을 때

by chaani 2021. 10. 20.

깃을 이용해서 열심히 작업을 하다 보면 이전에는 생각지 못했던 변경 사항이 생겨서 예전 커밋에 이를 반영하고 싶을 때가 있습니다.

 

이럴 때는 rebase 명령어를 이용하면 쉽게 예전 커밋에 변경 사항을 추가할 수 있습니다.

 


 

1. 먼저 'git log' 를 입력하여 돌아가고자 하는 특정 커밋을 확인합니다.

 

 

여기서는 위에서 세번째 커밋 시점으로 돌아가기로 합니다. (977c033420fa13207cd10929c7c13622795dd13a)

 

2. 'rebase -i'를 이용해 과거의 특정 커밋 시점으로 돌아갑니다.

 

현재 HEAD 커밋으로부터 상대적인 위치를 주거나 커밋 코드를 줄 수 있습니다.

 

git rebase -i HEAD~3 (현재 HEAD에서 3번째 전 커밋)

또는

git rebase -i 8819bda0d20046f9a38c154b550b6a25932a2bca (돌아가고자 하는 커밋의 직전 커밋)

 

3. vim 편집기가 열리면 해당 커밋을 찾아 'pick'을 'edit'으로 수정한 후 저장하고 편집기를 빠져나옵니다. (:wq)

 

4. 빠져나오면 아래처럼 해당 커밋 시점으로 돌아갑니다.

 

이제 반영하고 했던 변경사항들을 자유롭게 추가할 수 있습니다.

 

모두 끝났다면 'git add'를 통해 현재 커밋에 변경 내역을 추가합니다.

 

5. 'git rebase --continue'를 입력하면 아래와 같이 vim 편집기가 다시 열리고 :wq를 입력해서 빠져나옵니다.

(커밋 메시지 수정이 필요하다면 수정한 후 :wq를 입력합니다)

 

 

6. 이후 따로 충돌이 나지 않는다면 다시 원래 커밋 위치로 돌아갑니다.

 

 


 

rebase 진행 도중에 문제가 생겨 다시 시작하고 싶은 경우
'git rebase --abort'를 입력하여 rebase를 종료하고 초기 상태로 돌아갈 수 있습니다.