[Git]

[Git] git branch 병합 충돌 해결, pull request (ft.소스트리)

극꼼 2021. 3. 17. 12:40
반응형


지난 포스팅에서 브랜치 병합을 배웠던데에 이어서, 

병합했을 때 버전끼리 충돌했을 경우에 대해 알아보겠습니다.

 

위와 같은 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] 버튼을 눌러줍니다. 

반응형