본문 바로가기

Programming

Git Merge vs Squash and merge(Squash) vs Rebase and merge(Fast forward) 차이점, pull request, 풀리퀘스트 병합 방법 차이점

Merge / Squash and Merge(Squash) / Rebase and Merge(Fast forward) 차이

 

 깃의 커밋 히스토리를 관리하는 관점에서 보면서 사용하면 될 듯 하다.

아래의 그림들에서 개념을 확인 가능하다.

 

 

 

 

지금부터 아래, 유사하나 좀 더 세부적인 내용 설명 (https://meetup.toast.com/posts/122)

 

사용 예시

Git Flow 를 따른다고 했을 때, 아래와 같이 정리.

  • develop - feature 브렌치간 머지 : Squash and Merge가 유용합니다. feature의 복잡하고 지저분한 커밋 히스토리를 모두 묶어 완전 새로운 커밋으로 develop 브렌치에 추가하여, develop 브렌치에서 독자적으로 관리할 수 있기 때문입니다. 일반적으로 머지 후에 feature 브렌치를 삭제해버리는 점을 떠올려 보면, feature 브렌치의 커밋 히스토리를 모두 develop 브렌치에 직접 연관 지어 남길 필요가 없습니다.
  • master - develop 브렌치간 머지 : Rebase and Merge가 유용합니다. develop의 내용을 master에 추가할 때에는 별도의 새로운 커밋을 생성할 이유가 없기 때문입니다.
  • hotfix - develop, hotfix - master 브렌치간 머지 : Merge 또는 Squash and Merge 모두 유용합니다. 때에 따라 골라 사용하면 좋을 것 같습니다. hotfix 브렌치 작업의 각 커밋 히스토리가 모두 남아야 하는 경우 Merge, 필요 없는 경우 Squash and Merge를 사용하면 됩니다.