협업을 하다보면 브렌치를 생성하고, 해당 브렌치에서 작업 후 Pull Request를 생성한다.
이때 Pull Request에서 merge를 하려고 할 때 3가지 방법이 있다.
이번 글에서는 위 3가지 방법에 대해 알아보고자 한다.
가장 기본적인 Merge이고, Fast-Forward와 Recursive 방식으로 나뉜다.
출처: 코딩애플
Pull Request를 실행하는 시점의 main 브렌치가 new 브렌치를 생성한 시점의 main과 차이가 없다면, new 브렌치가 main 브렌치로 바뀌는 것을 의미한다.
만약 Recursive 방식을 적용하고 싶다면 git merge
에 --no-ff
옵션을 추가하면 된다.
출처: 코딩애플
Pull Request를 실행하는 시점의 main 브렌치가 new 브렌치를 생성한 시점의 main과 차이가 있다면, 새로운 commit을 하나 생성하여 해당 commit에 변경 사항을 합친다.
3-way-merge라고도 불린다.
출처: 코딩애플
new 브렌치에 있던 모든 commit 내용을 하나의 commit으로 묶어서 main에 합친다.
출처: 코딩애플
new 브렌치의 base를 main의 최신 commit으로 잡고 new 브렌치의 모든 commit을 그대로 main으로 옮긴다.
항상 merge 하기 전에 위 옵션들이 궁금하기는 했지만, 내용이 어려울 것 같아서 시작이 어려웠다.
하지만 막상해보니 어렵지 않은 개념이었고 상황에 따라 merge 전략을 잘 짜서 사용해야겠다.
참고