팀 프로젝트 시 Git 사용법
Upstream
레포지토리를 나의 레포지토리로 fork
를 한 후 나의 레포지토리에 clone
을 한다. master
브랜치에서 dev
브랜치로 이동해 준다. Checkout dev
(master => dev이동)
Checkout -b feature/1/기능 내용
(-b는 브랜치 생성 / checkout 브랜치 이동)
add(파일)//push//commit
해준다. git add .
git commit -m 'completed #1'
git push origin feature/1/기능
Origin
에서 Upstream
으로 pull request (PR)
작업을 해준다.merge
를 해준다.pull
을 받은 후 다음 브랜치를 따서 작업하면 된다.git pull upstream dev
(최신버전으로 업데이트)
Merge 충돌 발생 시 처리법
팀원들이 pull을 받고 branch를 각자 1번,2번을 따서 작성 하는 중 1번이 먼저 코드가 완성되어 merge를 하게되면 2번이 merge를 시도할때 conflict(충돌)
가 발생할 수 있다.
물론 merge를 먼저 했다고 다 conflict가 일어나는 것은 아니라, 내가 pull origin dev
를 한 후에 다른 팀원이 나와 같은 라인을 수정하고, 그 수정한 내역을 dev
로 합쳤을때(merge) conflict가 발생한다.
이런 경우에는 충돌된 코드를 수정해줘야 pull request
가 성공한다.
그래서 만약 1번
이 merge를 먼저 한 상황이라면 2번
은 merge 하기 전에 dev branch로 이동해서 1번이 업데이트한 것을 pull
받고 다시 2번 branch로 이동해서 dev를 merge해서 최신으로 업데이트해준다.
여기서 예상햇던 충돌이 발생하고 수정 후 merge
를 하면 된다.
(dev) git checkout feature/2/
# 내 작업 브랜치로 이동
(feature/1) git merge dev
# 최신으로 업데이트 된 dev 브랜치를 내 작업 브랜치와 merge
Auto-merging index.js
CONFLICT (content): Merge conflict in index.js # 충돌된 파일 이름은 index.js
Automatic merge failed; fix conflicts and then commit the result.
이렇게 충돌이 나면 index.js 파일에 들어가서 충돌부분을 수정해주고 다시 git add
, commit
, push
, pull request
,merge
해주면 된다.