TIL-2024.07.04 - TIPS - 다중 commit 하나로 합치기

도와줄 내용:
- 다른 Branch(test) 에서 Commit 한 내용을 하나의 Commit 으로 합쳐서 Main Branch (이하 origin main ) 로 PR 날리는 방법
작업 방향:
1. 작업한 내용 커밋

- 다른 Branch (test)에서 작업한 내용을 commit 1,2,3 로 commit 함.
- 여기서, commit-1 , commit-2 , commit-3 을 하나의 commit 으로 묶을 예정
2. 다른 브랜치에서 리베이스 작업 수행
// test 브랜치를 main 브랜치로 리베이스
git checkout test
git rebase -i main
- 여기서 -i 플래그는 인터랙티브 모드로 rebase를 실행하여, 텍스트 편집기가 열리면서 rebase에 포함될 커밋 목록이 나타남.
3. 커밋 합치기
- 해당 단계는 커밋을 합치거나 수정하는 단계
- git rebase -i main 을 입력하고, 엔터를 클릭하면 아래와 같은 텍스트 편집기가 열림

- 이렇게 열린 텍스트 편집기에서 i 를 눌러 insert mode 에 진입하고 commit-2 와 commit-3 의 pick 을 s 혹은 squash 로 변경
- 이때, 첫번째 commit 인 commit-1 은 건들이면 안되는데, 그 이유는 첫 번째 커밋이 기준 커밋(base commit) 역할을 하기 때문
- 나머지 커밋들은 이 첫 번째 커밋에 합쳐지는 형태로 동작하여 첫 번째 커밋의 커밋 메시지가 합쳐진 커밋의 기본 메시지가 됨

- esc 버튼을 눌러 insert mode 을 탈출하고, :wq 를 입력하고 enter 키를 눌러서 저장 후, 완료
- 텍스트 편집기 1 이 완료되면 텍스트 편집기 2가 노출
4. 커밋 메시지 합치기
- 해당 단계는 작성된 커밋 메시지를 하나로 합치는 작업

- 여기서도, i 를 눌러 insert mode 에 진입하고 아래의 사진과 같이 변경 (# 을 앞에 입력하여 주석 처리하거나, 지우기)
- 그 이후, 하나로 합쳐지는 커밋의 메시지를 설정하면 됨

- # 를 통해 주석 처리하고 새로운 commit 메시지를 new commit final 로 설정하고 esc 누른 후, :wq 로 작업 내용 저장
5. develop 브랜치로 변경 사항 적용

- 위의 단계를 거치면, commit log 가 변경된 것을 확인할 수 있음.
- 그 이후, git rebase test 를 하여 브랜치가 특정 기준 브랜치의 최신 변경사항 위에 재배치

- 그 이후 git push origin main 으로 test branch 에서 작업한 내용을 origin main 으로 push

주의사항
- 공유된 브랜치에서 리베이스하지 않기
- 리베이스 중 충돌 처리 : 리베이스 중 충돌이 발생할 경우, 충돌을 해결 한 후 작업 진행
- 백업 및 준비 : 혹시 모를 사태에 대비하여 git checkout -b new-test 로 작업 내용 저장