똑같은 코드를 동시에 고칠 가능성이 있기 때문에, 브랜치를 분기를 나누어 작업을 진행한다. 분기를 나누어 작업한 후에, 추후에 합친다. 충돌이 일어난다고 하더라도 명시적으로 충돌을 해결할 수 있다.
소스트리(sourceTree): 버튼 클릭으로 Git 명령을 실행하는 도구.
브랜치(Branch) 생성
브랜치 만들기
1 | git branch develop |
만든 브랜치로 이동하기
1 | git checkout develop |
master 브랜치: 기본 브랜치.
HEAD: 내가 지금 작업하고 있는 로컬 브랜치를 가르키고 있다.
머지(Merge)로 브랜치 합치기
- master 브랜치의 최신 커밋(base)에 develop 브랜치의 최신 커밋(compare)을 합치려고 한다.
- base가 될 master 브랜치로 이동한다.
- compare 브랜치인 develop와 합치라는 명령을 내린다.
1
git merge develop
- 합쳐진 결과는 develop 커밋이 된다.
- develop은 master +a가 되어 둘이 합쳐진 결과물은 develop이 된다. 그래서 develop과 master 브랜치 모두 develop을 가르키게 된다.
브랜치 충돌(Conflict)시에 해결 방법
머지(Merge)할 때 두 버전이 같은 곳을 수정했다면 충돌이 난다. 충돌이 났을 경우 이를 직접 수정하여 고쳐주어야 한다. 위가 기존 버전, 아래가 본인이 수정했던 버전이다.
충돌시 나오는 코드
1 | Lorem Ipsum is simply dummy text of the printing and typesetting industry. |
코드 수정
1 | Lorem Ipsum is simply dummy text of the printing and typesetting industry. |
다른 사람의 저장소를 통째로 복사하여 포크(Fork)하기
다른 사람의 저장소를 통째로 본인의 계정으로 복제해온 후, 복제해온 본인의 저장소에 자유롭게 커밋, 푸시를 한다. 포크를 했을 경우 소스코드를 망치더라도 원본 코드에는 아무런 영향이 가지 않는다. GitHub의 세팅에서 Collaborators 을 설정하여 오픈소스에 기여할 수 있다.
포크(Fork)하는 방법
- 원본 저장소의 주소를 복사한다.
- 본인의 로컬에 폴더를 만들어 해당 저장소를 clone한다.
- 새 계정을 추가하고 디폴트 계정으로 설정한다.
- 작업후 커밋 및 푸시를 진행한다.
- GitHub에서 커밋이 제대로 되었는지 확인한다.
병합 요청(Pull Request) 보내기
- 포크한 저장소에서 기능 개발을 끝낸다.
- 그 후 머지하고 싶은 두 브랜치를 선택하고 어떤 변경을 진행했는지 제목과 내용에 기재한다.
- 단일 저장소에서 보낼 수도 있고, 포크한 저장소에서도 보낼 수 있다.
브랜치 관리하기
- 한 사람이 개발하는 기능 브랜치를 생성한다.
- 작업이 끝나면 master 브랜치로 Pull Request를 보낸다.
- master 브랜치에서 대략적인 작업이 전부 머지되면 release 브랜치로 머지시키고 실서버에 배포한다.
- 직접 커밋은 본인이 개발하는 기능 브랜치에만 진행한다.
- master, release 브랜치에는 직접 커밋하지 않고 머지만 진행한다.
REFERENCE
패스트 캠퍼스 온라인 강의 처음 배우는 Git & GitHub _ 진유림 강사님