git 커밋을 여러개 작성했는데 하나의 커밋으로 만들고 싶을 때 사용 방법입니다.
git rebase -i Head~j
를 작성합니다Head부터 j개의 커밋을 합칩니다. j개의 커밋이 나타납니다.
pick 1234567 3번째 커밋
pick 1234568 2번째 커밋
pick 1234569 1번째 커밋
i
, a
키를 누릅니다.(편집키 커맨드)로 내용을 편집할 수 있습니다. 화면 하단에 --INSERT--
문구가 등장하면 편집이 가능합니다.
pick 1234567 3번째 커밋
pick 1234568 2번째 커밋
pick 1234569 1번째 커밋
-------------------------------------------
--INSERT--
최종 커밋 하남만 남기고 없애고 싶은 나머지 커밋을 s로 바꿉니다.
pick 1234567 3번째 커밋
s 1234568 2번째 커밋
s 1234569 1번째 커밋
-------------------------------------------
--INSERT--
ESC
를 누른 다음 :wq
로 저장합니다.ESC로 편집모드에서 명령모드로 바꿀 수 있습니다. w는 저장한다는 의미, q는 나간다는 의미가 있습니다.
pick 1234567 3번째 커밋
s 1234568 2번째 커밋
s 1234569 1번째 커밋
-------------------------------------------
:wq
저장하면 커밋들이 하나로 합쳐진 새로운 브런치가 생깁니다.(정확히는 main이 이쪽으로 변경된 상태)
# This is a combination of 3 commits.
# This is the 1st commit message:
3번째 커밋
# This is the commit message #2:
2번째 커밋
# This is the commit message #4:
1번째 커밋
-------------------------------------------
:wq
위를 아래와 같이 바꿉니다.
# This is a combination of 3 commits.
# This is the 1st commit message:
1, 2, 3 번째 커밋 통합
-------------------------------------------
:wq
git push -f origin 브런치명
으로 강제 push해줍니다.main은 제대로 새 브런치로 옮겨졌지만 원격 저장소에는 여전히 이전의 기록으로 남아있습니다.(origin/main 부분) 강제 push를 하면 원격 브런치도 커밋이 통합된 새 브런치로 바뀝니다.