💻 하나씩 차곡차곡/etc.

[intelliJ(인텔리제이)/git] Merge VS Rebase

뚜루리 2024. 1. 4. 08:44
728x90
320x100
오늘의 궁금증 :
인텔리제이에서 Update Project 를 클릭하면
Merge incoming changes into the current branch 와
Rebase the current branch on top of incoming changes 를 고르라고 뜬다.
둘의 차이가 뭘까?

 

두 문구의 차이는 커밋 히스토리를 어떻게 만들건지에 대한 선택임

 

🧩 옵션 1: Merge incoming changes into the current branch

[git merge]

  • 현재 브랜치에 원격 변경사항을 병합(Merge) 해서 새로운 병합 커밋이 생김.
  • 커밋 히스토리가 분기 + 병합된 형태로 남음.
*   Merge branch 'origin/main' into main
|\
| * origin/main 커밋
* | 내 커밋
  • 장점: 충돌 이력, 브랜치 흐름을 그대로 볼 수 있음.
    단점: 커밋 로그가 지저분해질 수 있음.

 

 

🧼 옵션 2: Rebase the current branch on top of incoming changes

[git rebase]

  • 현재 브랜치 커밋을 원격 브랜치 커밋 위로 다시 쌓음 (재적용).
  • 커밋 히스토리가 일자형(깔끔하게 일렬) 으로 정리됨.
* 내 커밋 2 (replayed)
* 내 커밋 1 (replayed)
* origin/main 커밋
  • 장점: 커밋 히스토리가 깔끔함.
    단점: 충돌 시 해결이 번거롭고, 협업 중이라면 주의 필요 (이미 푸시한 커밋을 리베이스하면 안 됨).

 

👀 언제 뭐 쓰면 좋냐면...

상황 추천방식
개인 프로젝트 리베이스 (깔끔한 히스토리)
협업 중, 이미 푸시함 머지 (안전하게)
충돌 내역을 보고 싶음 머지
커밋 흐름을 깔끔하게 만들고 싶음 리베이스

 

728x90
320x100