이전 게시물에서 충돌했을 경우 병합하는 방법에 대해서 다루었었다.
https://zetamind.tistory.com/32?category=1018375
git 이클립스 브랜치 충돌 병합
1. 일단 같은 Git URI를 바라보는 2개의 프로젝트를 세팅해놓고 시작하겠다. 사용자1은 master 브랜치에 그대로 커밋하고, 사용자2는 별도의 브랜치에 작업하다가 merge할 생각이다. 사용자1, 2 모두 별
zetamind.tistory.com
그러면 프로젝트에서 많은 개발자들이 각자 작업한 소스를 충돌없이 병합하려면 어떻게 해야 할까?
각자 자신의 로컬 PC에만 브랜치를 생성하여 개발한 후 최종적으로 master 브랜치에 병합하는 것을 추천한다.
즉, 아래와 같은 과정을 거친다.
1. 로컬PC에 local_dev 라는 브랜치를 생성한다.
2. local_dev 브랜치에서 작업한 소스를 commit 한다. (push 하면 안됨)
3. master 브랜치로 스위칭 한 후 싱크를 맞춰서 다른 사람이 작업한 소스코드를 pull 한다.
4. master 브랜치를 기준으로 local_dev를 병합한다.
5. master 브랜치를 remote에 commit and push 한다.
각, 과정에 대해 상세히 설명해 보겠다.
(여기서는 테스트를 위해 다른 개발자가 origin/master에 커밋했다는 전제하에, mater 브랜치에 임의의 소스를 추가하여 Commit and Push 하였다.)
1. 로컬PC에 local_dev 라는 브랜치를 생성한다.
프로젝트 우클릭 > Team > Switch To 메뉴에서 New Branch를 선택하여 local_dev 브랜치를 생성한다.
제대로 생성되면 아래와 같이 프로젝트명 옆에 표시되는 브랜치가 local_dev 로 변경된다.
2. local_dev 브랜치에서 작업한 소스를 commit 한다. (push 하면 안됨)
로컬에서 작업을 완료한다.
프로젝트 우클릭 > Team > Syncronyze Workspace에서 Commit 할 목록을 Staged Changes로 옮긴다.
작업후 Remote에 쓸데없는 브랜치가 생기지 않도록 Commit만 하도록 한다.
물론, 실수로 Push했다면 Git Repository의 Remote Tracking에서 Delete 하면 된다. (이 경우엔 실수로 다른 branch를 삭제하지 않도록 주의하자.)
3. master 브랜치로 스위칭 한 후 싱크를 맞춰서 다른 사람이 작업한 소스코드를 pull 한다.
프로젝트 우클릭 > Team > Switch To 메뉴에서 master 브랜치로 변경한다.
프로젝트 우클릭 > Team > Syncronyze Workspace 실행 후 pull 을 실행하여 소스를 최신화한다.
4. master 브랜치를 기준으로 local_dev를 병합한다.
프로젝트 우클릭 > Team > Merge를 실행한다.
local_dev를 선택 후 Merge 한다.
위와 같이 병합이 된 상태에서 충돌이 발생한 파일은 우클릭 > Team > Merge Tool을 실행한다.
아래와 같이 병합툴이 실행된다.
Pre-merged Local Version 쪽의 소스를 수정하여 병합후 저장한다.
5. master 브랜치를 remote에 commit and push 한다.
깔끔하게 push 되는 것을 볼 수 있다.
Git Repositories에서 확인해 보면 아래와 같이 Remote에는 쓸데없는 브랜치를 생성하지 않고 origin/master에 내가 작업한 결과물을 적용하였다.
이런식으로 관리하면 여러 개발자가 동시에 작업하여도 origin/master 브랜치를 깔끔하게 관리할 수 있다.
local_dev 브랜치는 로컬에만 생성되었으므로 삭제해도 되고, local_dev로 스위칭 한 후 origin/master를 병합해서 다음 작업에 다시 사용해도 된다.
'개발 > Git' 카테고리의 다른 글
egit history 합치기, history 메시지 수정 (0) | 2022.12.19 |
---|---|
git 이클립스 브랜치 충돌 병합 (2) | 2022.04.13 |
git 이클립스 pull (0) | 2022.04.13 |
git 이클립스 rejected-non-fast-forward (0) | 2022.04.13 |
git 이클립스 revert , reset 차이점 (0) | 2022.04.08 |