여러개의 커밋을 깔끔하게 한개의 커밋으로 합치고 싶을 때 사용한다.
앞으로 자주 이용할 것 같아서 정리해놓으려고 한다.
위와 같은 커밋기록이 있으 때 2번 커밋과 3번 커밋을 합치고 싶을 때 사용한다.
혹시 모를 백업을 위하여 최상위(즉 현재 HEAD=master가 가르키는 커밋)의 커밋번호를 기억해둔다(d7f318f)
rebase대상을 init 커밋 위에 있는 1, 2, 3, 4 4개의 커밋으로 하고 싶을 때 아래와 같이 init의 커밋번호를 통하여 rebase명령어를 작성해준다. 즉 git rebase - i [커밋번호] 에서 커밋번호 이 후로 작성된 커밋이 모두 대상으로 올라오게 된다.
git rebase -i 7cd8a80
명령어 실행 시 다음과 같은 창이 나타난다.
주의해야 할 점은 순서인데, 위에서부터 아래로 갈수록 최신커밋이라는 점이다.
여기서 만약 2, 3번 커밋을 합치고 싶다면 더 나중에 작성된 커밋은 3 커밋이므로 3커밋에 squash를 작성해준다.
즉 3 커밋이 바로 그 직전에 작성된 2커밋과 함께 합쳐지게 되는것이다.
[참고] : vi 에디터 모드이므로 작성하고 싶다면 i를 눌러준다. 작성 완료 후 ESC키를 한번 누르고 :wq입력하면 저장 후 나가게 된다.
pick을 squash로 변경 후 저장하고 나가면 아래와 왼쪽과 같은 창이 뜨게 된다.
이 때 오른쪽과 같이 커밋메세지를 변경해주면 변경된 새로운 커밋메세지와 함께 합쳐지게 된다.
만약 리베이브 결과가 잘못됐거나 맘에들지 않아서 처음으로 돌아가고 싶다면??
(d7f318f) 아까 기억해놓은 가장최신 커밋으로 reset해준다.
git reset --hard d7f318f
그러면 아래와 같이 초기 모습으로 돌아온 것을 확인할 수 있다.
출처 : 생활코딩 - https://www.youtube.com/watch?v=ZMoB1SZ4Ceg