지난 포스팅에서 브랜치 병합을 배웠던데에 이어서,
병합했을 때 버전끼리 충돌했을 경우에 대해 알아보겠습니다.
위와 같은 branch 2개를 생성하고,
Abranch에는 위와 같이,
Bbranch에는 위와 같이 파일을 수정해줬습니다.(수정한 부분이 겹치는 상태)
<Git Branch 병합 충돌 해결>
이제 지난 포스팅과 같은 방식으로 병합을 해줍니다.
두번째 브랜치를 병합할 때 위와 같이 '병합 충돌'이 있다는 창이 뜹니다. 두 브랜치가 같은 라인의 코드를 수정했기 때문에 충돌이 일어난 것입니다.
비주얼 스튜디오 코드를 확인해보면,
위와 같이 충돌이 일어났음을 알려줍니다.
이때 상단에 [Accept Current Change], [Accept Incoming Change], [Accept Both Changes], [Compare Changes] 4가지 키워드가 등장합니다.
Accept Current Change : 위의 코드(브랜치 내용 A)만 남음
Accept Incoming Change : 아래 코드(브랜치 내용 B)만 남음
Accept Both Changes : 위와 아래 코드가 모두 남음
Compare Changes : 아래와 같이 다른 코드를 비교해줌
저는 A,B 내용 모두를 살리기 위해 [Accept Both Changes]를 선택해줬습니다.
내용을 수정해준 후 커밋 버튼을 누르면 다음과 같이 자동 메시지가 생성됩니다.
충돌이 일어났고, 어느 파일에서 충돌이 일어났는지 자동으로 생성됩니다.
<Pull Request>
pull request : 협력자에게 브랜치 병합을 요청하는 메시지를 보내는 것.
테스트를 위해 새로운 브랜치 [branch2/forPullRequest]를 만든 후, 내용을 수정한 다음 커밋했습니다.
그 다음 원격저장소로 푸시해줍니다.
이제까지 새로운 브랜치를 커밋한 후 원격저장소에 푸시할 때마다 원격저장소에 위와 같은 메시지가 생겼을 것입니다.
이 메시지는 최근에 푸시한 브랜치가 있을 때만 보여집니다.
여기서 먼저 설정해야 할 것은 base 브랜치과 compare 브랜치입니다.
병합한 결과물이 올라갈 브랜치가 base 브랜치 입니다. 노란 메시지의 버튼을 통해 이 창으로 왔다면, 자동으로 설정됩니다.
우측에는 위와 같은 입력 창이 보입니다.
Reviewers : 협력자. 보통 같은 팀원이나 해당 기능과 연관된 동료.
Assignees : 이 풀 리퀘스트를 담당하는 동료. 보통 자기자신.
Labels : [버그], [리뷰 필요], [프런트엔드] 등의 이 풀 리퀘스트에 대한 라벨
[Create pull request]를 클릭하면 원격저장소의 [Pull requests] 탭에 다음과 같이 새로운 request가 생깁니다.
병합 과정은 아래와 같습니다.
병합이 끝난 request는 closed 탭으로 이동합니다.
<병합된 브랜치 내 컴퓨터에 반영하기>
원격저장소에서의 브랜치 병합은 끝났지만, 아직 소스트리(로컬저장소)에는 반영되지 않은 상태입니다.
소스트리 상단의 패치 탭에서 [모든 원격 저장소에서 가져오기]를 선택한 후 확인을 눌러줍니다.
내 컴퓨터의 [master]브랜치로 새로운 커밋을 반영하기 위해 체크아웃해준 후, [Pull] 버튼을 눌러줍니다.
'[Git]' 카테고리의 다른 글
[Git] rebase (feat. SourceTree) (0) | 2021.03.19 |
---|---|
[GitHub] GitHub 마크다운 작성 시 이미지 업로드 방법 (0) | 2021.03.18 |
[Git] git branch (branch 만들기, 이동하기(checkout), 병합하기) (ft.소스트리) (0) | 2021.03.16 |
[Git] 소스트리를 이용한 버전 관리 (ft. 소스트리 설치하기) (0) | 2021.03.15 |
[Git] GitHub 원격저장소 커밋을 로컬저장소에 내려받기 (0) | 2021.03.12 |