울음참고 개발공부
article thumbnail
Published 2023. 4. 30. 17:59
Git | merge 방법 3-way , fast-forward Git
728x90

merge 를 하는데 다양한 방법이 있다.

 

 

[ 1 ] 3-way merge

 

각각의 브랜치에서 신규 commit 이 1회 이상있는 경우에 merge 하면
두 브랜치의 코드를 합쳐 새로운 commit 을 자동으로 생성해주는 방법이다.

 

 

 

[ 예시 ]

 

출처: https://wikidocs.net/153693

 

그림에서처럼 두 브랜치가 base 에서 분리되어 각각의 브랜치를 가진 후 1회 이상 commit된 상태이다. 

 

 

출처: https://wikidocs.net/153693

 

두 브랜치 (master,dev1)가 base 에서 분리된 commit 을 참조할 때 git merge를 실행하면 새로운 commit 이 생성된다.

이와 같은 merge 를 3-way-merge 라고 한다.

 


3-way 로 불리는 이유는?

 

내용을 병합할 때, base와 각 브랜치 2개가 참조하는 commit 을 진행하기 때문

 

 

 

 

[ 단점 ]

 

브랜치를 3-way merge 로만 관리할 경우에 프로젝트 완료 후 log 출력시

모든 commit 메시지가 함께 출력되므로지저분하다.

 

복잡하고 깔끔하지 못함 

 

 

 

[ 예시 ]

 

 

Git | branch 생성 - merge - conflict 해결 예제

여태까지 git 을 사용하며 메인 브랜치만 사용하고 다른 브랜치를 같이 사용해본적이 잘 없다. 하지만 브랜치관리는 협업에 있어 무척이나 중요하다!! [ 상황 ] 예를 들어 쇼핑몰 웹페이지를 구현

megak.tistory.com

 

 

 

 

[ 2 ] fast - forward merge 

 

기준 브랜치에 신규 commit 이 없는 경우의 merge

 

 

출처: https://wikidocs.net/153693

 

두 브랜치가 공통으로 가지고 있는 commit을 base 라고 하면,

master 브랜치와 dev1 브랜치가 각각 참조하는 commit이 동일 선상에 위치할 때 Fast-forward 상태에 있다고 한다.

 

 

출처: https://wikidocs.net/153693

 

 


fast-forward 라 불리는 이유는?

 

fast-forward 관계에 있는 브랜치를 관계에서 git merge 명령을 입력하면 새로운 commit이 생기지 않는다.

뒤에 쳐진 브랜치(여기서는 master)의 참조 개체가 앞서있는 브랜치가 가리키는 개체를 참조하도록 이동할 뿐이다.

마치 브랜치가 점프 하듯 상대 브랜치 참조 값으로 이동하는 모습을 본따서 fast-forward(빨리감기)라고 불린다.

 

 

 

[ 예시 ]

 

 

 

master 브랜치에서 'purchase' 브랜치를 생성하고 purchase 브랜치에서만 commit 을 해주었다.

 

이 다음 merge 를 진행해 보자. 

 

 

먼저, master 브랜치로 이동한 후 merge 를 진행한다.

기준이 되는 master 브랜치에서는 commit 이 일어나지 않은 상태에서 merge 를 진행했다.

때문에 'Fast-forward' 가 되었다고 알려주고 있다. 

 

 


Fast-forward merge 를 원하지 않는다면?

 

git merge --no-ff 브랜치명

 

해당 메시지로 강제로 3-way-merge 를 진행할 수 있다. 

 

 

 

 

[ 참고 ]

 

혼자 개발할 때는 상관이 없지만 앞으로 받게될 갑의 요청에 따라 프로젝트 진행 시

예를 들어

안중요한 브랜치는 squash 로,

feature/develop 브랜치는 3-way merge로 관리해달라고 할 수 있다. 

 

그럼 그때 그렇게 해주면 된다..^_^

 

 

 

[ 출처 ]

코딩애플 (무료강의 시청 후 공부내용)

 

https://wikidocs.net/153693

728x90
profile

울음참고 개발공부

@메각이

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!