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를 사용하면 됩니다.
'Programming' 카테고리의 다른 글
JPA hibernate: @OneToOne Lazy Loading, 일대일 매칭에서 지연로딩 시, optional = false 를 주어야 하는 이유 (0) | 2021.06.05 |
---|---|
@DataJpaTest 테스트케이스 실행 시 fail, hibernate dialect, AutoConfigureTestDatabase, jdbc sql syntax error (0) | 2021.05.27 |
Git Merge vs Rebase 차이점 (0) | 2021.05.18 |
Git Fetch vs Pull 차이점 (0) | 2021.05.18 |
Java의 equals, == 연산자와 String의 비교, JVM의 Heap 과 Constant Pool, Stack 등.. (2) | 2021.05.12 |