각 팀원들의 브랜치를 모두 받았으면 원본 저장소의 master에 병합하는 작업을 해야 합니다.
원본을 master에 병합하는 일은 앞에서 살펴보았던 fetch - merge - push의 3단계 작업이 동일하게 적용됩니다.
지금부터 하는 모든 작업은 main 원본 저장소를 관리하는 팀장의 작업 브랜치가 아닌 master 브랜치에서 해야 하는 작업입니다.
반드시 master 브랜치로 전환하고 작업합니다.
[github 사이트의 내용 fetch 하기]
github 사이트에서 merge 한 각 브랜치의 변경된 파일을 STS에서 fetch 한 후 master 브랜치에서 병합해야 합니다.
우선 fetch 하기 위해 [Git Repositories]로 이동합니다.
현재 작업 중인 로컬 저장소의 [Remotes]-[origin]의 fetch 아이콘을 선택하고 [Configure fetch..]를 선택합니다.
모든 사용자의 브랜치를 fetch 해야 합니다. [Configure fetch] 대화 상자가 show 되면 [Add] 버튼을 눌러 모든 브랜치를 추가합니다.
[Space bar] 버튼을 누르면 브랜치 목록이 출력되며 원하는 브랜치를 선택하고 더블 클릭을 하면 브랜치를 선택할 수 있습니다.
이런 방법으로 모든 팀원들의 브랜치를 모두 등록해야 합니다.
[Save and Fetch] 버튼을 눌러 github 사이트에 등록된 원본 저장소의 모든 브랜치를 다운로드합니다. 완료되면 [Git Repositories] 뷰의 [Branches]-[Remote Tracking]에 모든 브랜치가 추가된 것을 확인합니다.
[fetch 한 내용을 로컬의 master 브랜치에 merge 하기]
fetch 한 모든 브랜치의 변경된 파일을 master에 병합해야 합니다. 그래야 push 할 수 있겠죠? [Git Repositories] 뷰의 [Branches]-[Local]의 master를 선택하고 [Merge]를 선택합니다.
[Merge] 대화 상자가 나타나면 [Local]의 master와 fetch 받은 목록의 모든 브랜치를 하나하나 모두 병합해야 합니다. 우선 [Remote Tracking]의 park 브랜치를 선택하고 [merge] 버튼을 선택합니다.
[merge 오류 발생-1]
merge가 성공되어야 하는데 혹시 아래와 같은 대화상자가 나타나는 경우가 있습니다. commit 하지 않은 파일이 발견되기 때문에 merge가 되지 않는다는 메시지입니다.
이런 경우 [Git Staging] 뷰를 가면 [Unstaged changes] 영역에 commit 되지 않은 파일이 추가되어 있는 것을 확인할 수 있습니다.
모두 commit을 완료해야 merge가 되므로 commit 합니다.
[merge 오류 발생-2]
다시 merge 기능을 선택하면 merge가 잘됩니다. 그러나 자세히 보면 [Merge Result] 대화상자의 결과 메시지가 "Result Conflicting"인 걸 볼 수 있습니다.
merge 하면서 충돌이 발생한 것입니다.
프로젝트를 보면 빨간색으로 오류처럼 충돌한 파일이 변경된 것을 알 수 있습니다. 설정 파일은 대부분 merge 할 때 충돌이 발생합니다. 설정이 모두 다르니 그럴 수밖에 없겠죠? 설정 파일은 가급적 포함시키지 말고 나머지 동시에 수정한 파일은 수동 편집하도록 합니다. 편집이 끝나면 stage 영역으로 보내고 로컬 저장소에 commit까지 완료해야겠죠?
충돌이 일어난 부분은 알아보기 쉬우라고 <<<<<<<HEAD와 =========, >>>>>>로 코드를 구분하여 표시해 놓습니다.
2번부터 6번이 충돌이 일어난 구간이며 3번과 5번 라인이 중복되어 있는 것을 알 수 있습니다.
또한 11번부터 15번 라인이 두 번째 충돌이 일어난 구간이며 12번과 14번 라인이 중복되었습니다.
수동 편집을 한 후 로컬 저장소로 commit 합니다.
merge가 완료되면 각각의 브랜치에서 작업한 모든 내용이 모두 master에 병합되어 있는 것을 알 수 있습니다.
[원본 저장소의 master 브랜치에 push 하기]
merge가 완료되면 이제 원본 저장소의 master 브랜치에 반영을 해놓아야 하므로 push를 해야 합니다. [Remote]-[origin]을 선택하고 [Push] 합니다.
github 사이트에서 확인하면 park 브랜치에서만 보이던 변경 내용이 master 브랜치에서 merge되어 보이는 것을 확인할 수 있습니다.
'프로젝트관련 tool > github' 카테고리의 다른 글
프로젝트를 위한 작업 - step9 저장소 동기화시키기(팀원) (0) | 2019.08.24 |
---|---|
프로젝트를 위한 작업 - step8 팀장도 개발하는 경우 브랜치를 만들고 작업합니다.(팀장) (0) | 2019.08.23 |
프로젝트를 위한 작업 - step6 Pull request처리하기(팀장) (0) | 2019.08.22 |
프로젝트를 위한 작업 - step5 Pull request(팀원) (0) | 2019.08.22 |
프로젝트를 위한 작업 - step4 브랜치에서 작업하기(팀원) (0) | 2019.08.22 |