먼저 git log을 통해 기존의 log 를 보고 합칠 commit log을 개수를 파악한다.
git rebase -i <commit_hash> ~ n 사용하여 여러 commit log을 하나로 합친다.
<commit_hash> 부터 n개의 commit log을 하나로 합친다는 의미로 n 에는 합치고자 하는 commit log 개수를 명시하면 된다.
<commit_hash> 부분에는 HEAD로 변경해서 현재 Head 위치부터 명시할 수도 있다.
이번 예제에서는 <commit_hash>를 명시하여 해당 <commit_hash>부터 6개의 commit log을 합치도록 한다.
:~/test$ git rebase -i 283c166ff519fb53b1227b36357f5893ea71da76~6
[HEAD 분리됨 9c5d1cca1b] [git test] test1
Date: Tue Sep 13 12:20:23 2022 +0900
6 files changed, 0 insertions(+), 0 deletions(-)
create mode 100644 test/test.c
create mode 100644 test/test2.c
create mode 100644 test/test3.c
create mode 100644 test/test4.c
create mode 100644 test/test5.c
create mode 100644 test/test6.c
Successfully rebased and updated refs/heads/master.
2번과 같이 명령어를 입력했을 때 아래 화면과 같은 edit창이 뜬다.
3번에서 뜬 edit 창에서 대표하는 commit log를 제외한 나머지를 pick에서 squash로 변경한 후 저장한다.
squash는 commit log을 하나로 병합한다는 의미이다.
4번에서 저장하고 edit 화면을 종료하면 아래와 같은 edit 화면으로 변경될 것이다.
대표 commit log의 주석만 남기고 제거 후 저장한다. 이 때 commit log 주석도 변경 가능하다.
git log를 통해 최종적으로 commit log들이 합쳐졌는지 확인한다.