> 기초/도와줘요!

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

Janku 2024. 7. 4. 15:28

 

 

 

 

 

 

도와줄 내용:

- 다른 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 을 입력하고, 엔터를 클릭하면 아래와 같은 텍스트 편집기가 열림

Before

 

- 이렇게 열린 텍스트 편집기에서 i 를 눌러 insert mode 에 진입하고 commit-2 와 commit-3 의 pick 을  s 혹은 squash 로 변경

- 이때, 첫번째 commit 인 commit-1 은 건들이면 안되는데, 그 이유는 첫 번째 커밋이 기준 커밋(base commit) 역할을 하기 때문

- 나머지 커밋들은 이 첫 번째 커밋에 합쳐지는 형태로 동작하여 첫 번째 커밋의 커밋 메시지가 합쳐진 커밋의 기본 메시지가 됨

 

 

After

 

- esc 버튼을 눌러 insert mode 을 탈출하고, :wq 를 입력하고 enter 키를 눌러서 저장 후, 완료

- 텍스트 편집기 1 이 완료되면 텍스트 편집기 2가 노출 

 


4. 커밋 메시지 합치기

- 해당 단계는 작성된 커밋 메시지를 하나로 합치는 작업

Before

 

- 여기서도, i 를 눌러 insert mode 에 진입하고 아래의 사진과 같이 변경 (# 을 앞에 입력하여 주석 처리하거나, 지우기)

- 그 이후, 하나로 합쳐지는  커밋의 메시지를 설정하면 됨

 

After

 

- # 를 통해 주석 처리하고 새로운 commit 메시지를 new commit final 로 설정하고 esc 누른 후, :wq 로 작업 내용 저장

 


5. develop 브랜치로 변경 사항 적용

 

 

- 위의 단계를 거치면, commit log 가 변경된 것을 확인할 수 있음.

- 그 이후, git rebase test 를 하여 브랜치가 특정 기준 브랜치의 최신 변경사항 위에 재배치 

 

test 브랜치의 변경 사항을 main 브랜치에 rebase

 

 

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

 

 

 

완성!

 


 

주의사항

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