티스토리 뷰

Pull Request를 통해 협업을 할 수 있는 방법을 학습했다. Pull Request를 올리고 난 후 조금 더 작업을 진행할 수도 있을 것이다. 이런 상황에서 충돌이 발생할 수 있다. Pull Request를 올린 상황에서 발생하는 충돌(Conflict)를 해결할 수 있는 방법은 무엇일까?

 

Pull Request에서 발생한 Conflict

코드를 작업하면서 발생했던 충돌(Conflict)들이 Pull Ruquest에서도 발생할 수 있다. 바로 같은 파일을 수정한 2개의 브랜치가 순서대로 Merge되는 상황에서 발생한다. 앞에서 예시로 들었던 김왼손씨와 이오른씨의 개발 과정을 다시 한 번 예시로 들어보자.

 

김왼손씨가 a.py를 수정하고 "left"라는 브랜치에 Push를 한 후 Pull Request(PR)을 만들었다. 하지만 공교롭게도 이오른씨도 a.py를 수정하고 "right"라는 브랜치를 만들어 Pull Request(PR)를 만들었다. 이 때, 먼저 김왼손씨의 코드를 리뷰하고 "Master Branch"에 "left" 브랜치가 Merge되는 순간, "right" 브랜치에서 Conflict가 발생하게 된다. 이 때까지 배운 개념들을 활용하면 이런 문제를 해결할 수 있다. 침착하게 최신화된 Master Branch를 "right" 브랜치에 Pull를 한 다음 다시 Push를 하면 해결할 수 있을 것이다.

 

Master Branch에서 Push

만약, 실험을 위해 이전까지 "feature/login" 브랜치에서 Commit하고 Push하고 Pull Request를 진행하다가, "master" 브랜치로 Checkout을 하고 나서 수정 후 Push를 하게 되면 어떤 일이 일어날까?

 

충돌 발생

"This branch has conflicts that must be resolved"라는 충돌 메시지가 나타난다. 그 이유는 무엇일까?

그 이유는 바로 "feature/login" 브랜치에서 Push한 파일의 내용과 "master" 브랜치에서 Push한 파일의 내용이 달라서 충돌이 발생한 것이다.

 

그렇다면, 이 충돌 문제를 해결할 수 있는 방법은 무엇일까?

 

충돌 해결을 위해 Merge into current branch

위 이미지를 기준으로 "feature/login" 브랜치에 Checkout이 된 상태에서, "master" 브랜치와 "Merge into current branch"를 하는 것이다.

 

충돌 시 해결할 수 있는 방법 중 하나 선택

"Merge into current branch"를 하고 나면, 위 처럼 충돌 상황이 나타난다. 그리고 나서 위의 세 가지 방법들 중 한 가지를 선택해서 충돌을 해결한다. 그리고 원하는 값으로 수정을 하고 나서 다시 Push를 한다.

 

충돌 문제 해결

그리고 나서, 다시 Repository의 Pull Request 탭에서 확인해보면 충돌 문제가 발생했던 것이 해결이 된 것을 확인할 수 있다.

 

그 다음,  "feature/login" 브랜치와 "master" 브랜치를 병합하기 위해서 위 이미지에서 "Merge pull request" 버튼을 누르게 되면 다음과 같은 화면을 볼 수 있다.

Merge pull request 버튼을 누르고 나서

그리고 나서, "Confirm merge" 버튼을 누르게 되면 원격 저장소에서 병합이 이루어지게 된다.

 

원격 저장소에서 병합 시도 후 로컬에서 확인

원격 저장소에서 병합을 시도하고 나서, 로컬 환경에서 확인하기 위해서 "master" 브랜치로 Checkout을 하고 나서 Pull을 시도하게 되면 "feature/login" 브랜치에서 작업한 것을 병합한 "master" 브랜치가 가져온 것을 확인할 수 있다.

병합 후, master 브랜치에서 pull한 결과

 


수료증

지금까지 부스트코스의 Github으로 따라하는 버전 관리를 수료했다.

모든 강의를 듣고 정리하면서 알고 있었던 내용은 복습할 수 있었고, 몰랐던 부분은 새롭게 배울 수 있었다.

그리고 가장 좋았던 것은 끝까지 포기하지 않고 강의를 모두 수강 완료하였고 수료했다는 것이다.

시작하고 나서 끝까지 듣는다는 게 생각보다 제대로 실천하지 않는 경우가 종종 있는데 이번에는 그걸 이겨내고 수료했다.

'프로그래밍 지식 > Git' 카테고리의 다른 글

용량 큰 파일의 커밋을 취소해야 했던 경험  (0) 2024.01.15
[Git 협업] Pull Request  (1) 2023.05.30
[Git 협업] Conflict  (0) 2023.05.30
[Git 협업] Co-working  (0) 2023.05.30
[Git 협업] Merge into current branch  (0) 2023.05.30