IT/[FE] 위클리 페이퍼

[FE] 📚 Git -Branch merge

serin99 2024. 4. 11. 17:05
728x90

 

🤗 오늘의 위클리 페이퍼는

Git - Branch merge에 대한 토픽입니다.


branch merge란?

 

👉 현재 branch에서 다른 branch를 합칠 때 사용합니다. 

merge Commit 방식은 새로운 병합 커밋을 생성하여 두 개의 branch를 합칩니다.

이 방법은 주로 병합된 이력을 명확하게 유지하고 싶을 때 사용합니다.

 

✅ 특징

 

  • 새로운 병합 커밋(merge commit)이 생성되어, 두 branch의 이력이 합쳐집니다.
  • 이력이 깔끔하게 유지되며, 두 branch의 변경 사항이 모두 기록됩니다.
  • 다른 사람들과 협업할 때, 두 branch의 변경 사항이 명확하게 드러나기 때문에 추적이 용이합니다.

 

특정 branch로 합치게 해달라고 요청하는 pr(pull requset)에도 위와 같이

세 가지 merge 방법 중 하나를 선택할 수 있습니다.


 

Merge

 

  • 일반적으로 많이 사용하는 merge 방법이며, 커밋 이력을 모두 남길 때 사용합니다.
  • 장점이자 단점은 모든 커밋과 분기했던 branch 히스토리가 남는다는 점입니다.

 

Fast-forward

 

 

git merge는 -ff(fast-forward) 옵션이 기본으로 설정되어 있는데,

이는 Base 브랜치가 이후 변경 내용이 없는 최신 브랜치일 경우 병합한다는 커밋 없이 합치고,

그렇지 않을 경우 병합 커밋을 남기고 합칩니다.

 

Github의 Merge pull requset는 git merge --no-ff 옵션으로 Base 브랜치가

최신 브랜치라 할지라도 커밋을 남기도록 강제합니다.


 

Squash & Merge

  • git merge에 -squash 옵션을 추가한 방법입니다.
  • 분기했던 branch에 있던 내용 a, b, c 커밋을 모두 합쳐 하나의 새로운 커밋을 만듭니다.
  • 지저분한 커밋 히스토리들을 하나로 합쳐서, 기능상 의미 있는 하나의 커밋만 남길 때 사용합니다.
  • 잘못 사용해 과도한 생략을 하게 되면, 추후 변경 파악이 힘들 수 있습니다.

 

Rebase & Merge

 

  • 분기했던 branch의 기준을 Base로 설정하고, merge하는 방법이며, 결과적으로는 git merge -ff와 같은 형태가 됩니다.
  • rebase를 하면 커밋들의 Base가 변경돼 커밋 해시 또한 변경 될 수 있습니다.
  • 이런 경우 git push -f(force push) 해야할 경우도 있습니다.
  • 머지 커밋을 남길 필요가 없는 merge의 경우 사용하면 좋습니다.
  • 커밋 그래프가 하나의 라인으로 그려져 가독성에 좋습니다.

 

📙 Merge Commit 방법

 

1. 병합을 원하는 branch로 이동합니다.

git checkout main

 

2. 다른 branch를 현재 branch로 병합합니다.

git merge feature_branch

 

3. 병합 커밋 메시지를 작성하고 저장합니다.


 

📘 Rebase 방식

 

Rebase 방식은 병견 사항을 다른 branch의 최신 커밋들 위에 쌓아 올립니다. 

이 방법은 branch 이력을 깔끔하게 유지하고 싶을 때 사용됩니다.

 

✅  특징

  • 변경 사항을 다른 branch의 최신 커밋들 위에 재배치하여 이력을 깔끔하게 유지합니다.
  • 커밋 히스토리가 선형적으로 유지되기 때문에, 이력이 단순해집니다.
  • 다른 사람들과 협업할 때, 커밋 히스토리를 보기 쉽게 유지할 수 있습니다.

 

1. 병합을 원하는 branch로 이동합니다

git checkout feature_branch

 

 

2. 대상 branch의 최신 커밋들 위에 변경 사항을 재배치합니다.

git rebase main

 

 

3. 충돌이 발생하면 충돌을 해결하고 'git reabse  --continue' 명령을 사용하여 계속 진행합니다.

 

 

4. 변경 사항을 적용한 후, 대상 branch로 이동하여 변경 사항을 병합합니다.

git checkout main
git merge feature_branch

두 방법은 각각의 상황과 개발 스타일에 따라 선택되어야 합니다.

Merge Commit 방식은 이력을 명확하게 유지하고 싶을 때 사용하며,
Rebase 방식은 커밋 히스토리를 깔끔하게 유지하고 싶을 때 사용됩니다.

728x90