깃을 이용해서 열심히 작업을 하다 보면 이전에는 생각지 못했던 변경 사항이 생겨서 예전 커밋에 이를 반영하고 싶을 때가 있습니다.
이럴 때는 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를 종료하고 초기 상태로 돌아갈 수 있습니다.