[Git] branch merge

LeeKyungwon·6일 전

공부 정리

목록 보기
14/24

branch merge란

현재 branch에서 다른 branch를 합칠 때 사용한다.
3가지의 종류가 있다.

Merge

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

Fast-forward 설정이란?

git merge에는 -ff옵션이 기본으로 설정되어 있는데 이는 Base 브랜치가 이후 변경 내용이 없는 최신 브랜치일 경우 병합한다는 커밋없이 합치고 그렇지 않을 경우 병합 커밋을 남기고 합친다.
Github의 Merge pull request는 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의 경우 사용하면 좋다.
  • 커밋 그래프가 하나의 라인으로 그려져 가독성에 좋다.

언제 어떤 걸 사용할까?

branch 전략에 따라 달라질 수 있다.

  • 특정 기능 개발 후 develop branch에 merge하고자 할 때는 Squash and Merge가 유용할 수 있다.
  • develop branch를 production branch로 merge하고자 할 때는 develop branch에 분기가 남아있다면, production branch는 간결하게 유지하고자 Rebase and Merge가 유용할 수 있다.

0개의 댓글