그럼에도 불구하고

👨‍💻

[Git, GitHub] 브랜치(branch) 병합(merge)하기 본문

이모저모/Git, GitHub

[Git, GitHub] 브랜치(branch) 병합(merge)하기

zenghyun 2023. 7. 6. 11:15

브랜치 병합에 대해 알아보겠습니다.

 

목차

     

     

    [ Merge ]

    branch를 이용하면서 개별 작업이 가능해지면서 편해졌지만, master를 기준으로 branch와 다른 branch를 결합해야 하는 상황에는 어떻게  해야 할까요?

     

    git merge 명령을 사용하여 이 작업을 수행할 수 있습니다. 

     

    - merge는 특정 커밋이 아닌 branch를 병합합니다.

    - merge는 항상 현재 HEAD branch를 기준으로 병합합니다.

     

     

    📌 사용법

    git switch master
    
    git merge branch-name

     

    1. 내가 병합하고 싶은 branch로 이동합니다. 

     

    2. git merge를 사용하여 현재 branch에 내가 원하는 branch를 병합시킵니다.

     

     

    아래는  Master에서 branch 한 Bugfix를 Master로 merge는 과정을 담은 그림입니다.

     

     

     

     

     

     

    위와 같이 merge는 간단한 상황만 존재하지는 않습니다. 

     

    다음은 합병 과정에서 충돌이 일어날 수 있는 경우에 대해 알아보겠습니다. 

     

    📌 합병(merge) 충돌

    1.  Master에서 branch 하여 만든 Bugfix에서 두 번의 commit을 한 상태이고, Master에서는 새로운 commit을 한 상태인 경우 

     

    그로 인해 Bugfix에는 Master에서 새로 commit 한 기록이 존재하지 않습니다. 이 상황에서 merge를 시도한다면 어떻게 될까요?

     

    위와 같은 상황에서 git은 단순 병합을 하기보다는 Master branch에서 새로운 commit을 할 것입니다. 

     

     

    모든 branch를 포함한 새로운 commit을 하는 것입니다.

     

     

     

    2. 한 branch에서 누군가 파일을 수정했고, 병합하고 있는 두 번째 branch에서 누군가 동일한 파일을 삭제한 경우

     

    ⭐️ 깃은 자동적으로 병합하는 방법을 알지 못해서 어떤 것을 유지하고 어떤 것을 제거해야 하는지 결정하지 못합니다. 

     

    그렇기 때문 애 아래와 같은 오류 문구를 확인할 수 있습니다.

     

    CONFLICT (content): Merge conflict in blahblah.txt
    Automatic merge failed; fix conflicts and then commit the result.

     

     

     

     

     

     

    🏷️  충돌 해결 방법

     

    1. merge conflicts가 발생한 파일(들)을 엽니다.

     

    2. 각  branch에서 충돌이 발생하는 내용을 모두 유지할지, 한 곳에서 제거할지 결정하고 수정 및 편집합니다. 

     

    3. 문서에서 충돌이 발생한 "marker"를 제거합니다.

     

    4. 변경 사항을 추가한 다음 commit 합니다.

     

     

     

    ⭐️ Git merge branch 연습하기 

     

    https://plum-poppy-0ea.notion.site/Git-Merging-Exercise-0236 a17 f04 c847159 a38 f5 efa978 ce2 c

     

    Git Merging Exercise

    This exercise is a little bit different. Rather than following my exact instructions step by step, I'd like for you to come up with your own scenarios that meet my requirements.

    plum-poppy-0ea.notion.site

     

    Comments