git으로 작업을 하다 보면 commit 후 수정할 부분이 생겨 같은 작업임에도 불구하고 두개 이상의 commit 로그가 남는 경우가 있다. 이 때 여러개의 커밋을 하나의 커밋으로 통합하는 방식은 아래와 같다.

1. 아래 git rebase -i 커맨드를 실행. 여기서 2는 합치고 싶은 커밋 갯수

git rebase -i HEAD~2

2. 그럼 vi창이 뜬다. 여기서 커밋 로그를 미래에서 부터 과거로 찌그러 뜨려 커밋을 합친다. 찌그러 뜨릴 로그는 pick을 s로 변경해준다. ※ 아래 그림에서는 7da2를 먼저 커밋하고 1468을 그 후 커밋한 상황

3. 이후 커밋 메시지를 수정하기 위한 vi창이 또 다시 뜬다. 여기서 커밋 메시지를 수정 후 :wq 로 저정을 하게 되면 커밋이 하나로 합쳐지게 된다.

번외로 여기서 만약 커밋을 합치기 전 상태를 A브랜치에 merge를 한 후 커밋을 합친 상태를 또 다시 A브랜치에 merge를 하게 될 경우 충돌이 생겨 상황이 복잡해 질 수 있으니  A브랜치를 git reset --hard로 커밋을 하기 전 상태로 돌려 merge를 하게 되면 간편하다.  

또 다른 경우로는 커밋을 합치기 전 상태를 이미 리모트에 push를 한 상태인 경우는 커밋을 합친 상태를 또 다시 push를 하게 되면 push를 실패하게 된다. 이 때는 git push에 -f 옵션을 추가하여 강제로 push를 해주면 된다.

단, 위의 번외 상황에 사용하는 git reset과 git push -f 커맨드는 상당히 위험한 커맨드이므로 반드시 백업을 한 후 실행에 옮기거나 다른 개발자와 상의를 한 후 실행하는 것이 좋다.

'기타' 카테고리의 다른 글

Go언어란  (1) 2023.11.09
Git & GitHub  (0) 2022.05.07
REST API  (0) 2022.02.27

+ Recent posts