• GIT

[Git] Merge - fast Forward merge, commit merge (merge 방식)

man_on 2022. 10. 26. 17:27
반응형

 

 

 

     


     

    Merge 브랜치 병합하기

     

     

     

    여러 사람이 작업할 경우 각각의 feature branch에서 작업한 결과물을 최종적으로 main branch에 결합한다.

    이 때 git merge를 이용하여 브랜치들을 단일화된 소스로 결합하게 된다.

     

    merge에는 크게 2가지 방법이 있다.

     

    1. Fast Forward Merge

       - 현재의 HEAD 브랜치에 병합한다. (현재 우리가 있는 위치)

    2. Commit Merge

       - 새로운 commit으로 병합한다.

     

     

     

     


    Fast Forward Merge

     

     

    HEAD 따라잡기

        2개의 브랜치 중 하나는 첫번째 브랜치가 가지고 있지 않은 추가 commit을 가지고 있다.

        이럴 때 뒤에 있는 브랜치로 이동하여 합쳐질 branch를 merge하면 앞서있는 commit으로 HEAD가 옮겨진다.

     

     

    ex) master에 bugfix 브랜치를 병합

    git switch master
    git merge bugfix

    master와 bugfix브랜치 따로 존재
    merge후 master 브랜치는 bugfix로 HEAD가 이동

     

     

    🦑 git Kraken으로 시각화

    - merge-test-branch에 추가 commit 2개 생성

    - master로 이동후 'git merge merge-test-branch'

     

    > master가 merge-test-branch의 두 commit을 따라잡고 이동하여 같은 commit을 참조하고 있다.

     

     

     

     

    Fast Forward Merge는 중간에 다른 commit이 없을 때만 가능하다.

    만약 위의 상황에서 master에 새로운 작업을 했거나, 다른 branch가 merge되어서 새로운 commit이 생겼다면

    Merge commit 방식으로 merge를 해야한다.

     

     

     

     

     


     

     

     

     

     

     

    Commit Merge

     

     

    새로운 commit을 생성하여 merge

    새로운 branch에서 작업 후 main에 merge를 하려는데 main에 새로운 commit이 있는경우

    새로운 commit이 생성되어 2개의 branch가 병합이 된다.

    ex)

    - master에서 분기된 commit-merge-test 브랜치에 2개의 commit이 존재

    - master에도 새로운 변경사항이 생겨 commit이 추가

    새로운 commit으로 두개의 브랜치가 병합

     

     

     

    conflict 해결

    새로운 commit으로 두개의 브랜치를 병합 시 같은 파일의 코드를 수정하게 되면 conflict가 자주 발생 할 수 있다.

    Accept Current Change | Accept Incoming Change | Accept Both Changes | Compare Changes

    4가지의 선택지가 vscode에서 주어지게 되고 선택지 중에서 하나를 선택하면 변경사항이 반영이된다.

    <<<<<<< HEAD
    현재 브랜치 변경사항
    =======
    merge되어지는 브랜치의 변경사항
    >>>>>>> commit-merge-test

     

    변경사항을 저장하고 commit하게되면 새로운 conflict해결 commit으로 2개의 브랜치가 완전히 병합되어 진다.

     

     

     

     

     

     


     

     

     

    반응형