gitlab 팀 프로젝트 - Feature Branch WorkFlow
Feature Branch WorkFlow
소규모 구성의 팀에서 프로젝트를 진행할 때 Feature Branch(기능 브랜치) WorkFlow 방식이 있다.
각 프로젝트는 Master가 있고 Master는 팀원들을 프로젝트에 추가시킬 수 있다.
각 팀원들은 브랜치(branch)를 생성해 작업하고 원격 저장소의 브랜치에 push한 뒤 Master에게 병합(Merge) 요청을 한다.
Master는 요청된 병합들을 검토하고 충돌을 제거해 프로젝트에 반영해야한다.
프로젝트 생성
마스터가 먼저 프로젝트를 생성
팀원 추가
프로젝트에 참여할 팀원 추가
Project의 Details -> Settings -> Members
프로젝트 멤버를 추가할 수 있는 화면이 나온다.
이메일이나 닉네임으로 초대하고 permission을 정할 수 있다.
지정할 수 있는 permission은 Guest, Reporter, Developer, Maintainer 가 있다.
각 permission의 권한은 read more 링크를 클릭하면 자세히 볼 수 있다.
developer로 지정 후 추가하고 팀원의 계정에 가보면 정상적으로 Developer로 프로젝트가 표시된다.
브랜치
developer 팀원들을 Master처럼 프로젝트를 직접 수정하고 push할 권한이 없다. 브랜치를 생성하고 작업할 수 있다.
브랜치 생성
$ git branch {name}
브랜치 목록 조회
$ git branch
해당 브랜치로 전환
$ git checkout {branch name}
브랜치 삭제
$ git checkout -d {branch name}
브랜치에서 작업
해당 브랜치로 전환한 후 작업한 뒤 저장소에 추가하고 커밋해야한다.
브랜치에 전체 파일 추가
$ git add .
커밋 달기
$ git commit -m "commit의 설명 추가"
원격 저장소로 푸시
팀원이 기능을 구현 후 원격 저장소로 저장
$ git push -u origin {branch name}
-u 옵션: 새로운 기능 브랜치와 똑같은 이름으로 중앙 원격 저장소의 브랜치로 추가한다. 한 번 추가 했으면 옵션은 빼도 된다.
$ git push origin {branch name}
병합 요청
이제 팀원이 개발한 Branch를 Master와 병합에 프로젝트에 반영해야한다.
gitlab 홈페이지의 해당 프로젝트에 들어가
Merge Requests로 들어가면 병합요청을 할 수 있다.
작업 한 branch를 선택하고 continue 버튼을 클릭하면 여러 요청에 대한 정보 입력란이 나온다.
밑부분에 submit merge request 버튼으로 요청을 완료할 수 있다.
Master에서 병합하기
Master는 요청이 온 Merge request를 확인할 수 있다.
들어가보면 요청에 대해 Merge할 것인지 승인을 거부할 것인지 등을 실행할 수 있다.
Merge를 누르면 프로젝트에 팀원이 개발한 소스가 병합된다.
최신 이력 업데이트
원격 저장소의 코드가 수정되었으므로, 프로젝트에 참여하는 개발자들은 최신 상태로 업데이트 해줘야할 것이다.
$ git pull
pull을 사용하면 원격 저장소의 변경된 데이터를 가져와 자동으로 병합해준다. 충돌 시 수정한 후 다시 커밋해야한다.
$ git fetch
단순히 원격 저장소의 내용을 확인만 하고 병합은 하고 싶지 않은 경우 fetch 명령 사용.
충돌 내용 확인하기
$ git status
어느 파일에 충돌이 일어났는지 알 수 있다. 해당 파일로 가보면
<<<<<<< HEAD
원래 내용
=======
브랜치에서 수정한 내용
>>>>>>> issue3
이런 형태로 바뀌어 있다. 이런 충돌을 모두 수정해주고 커밋한 뒤 push 해주면 된다.
$ git push origin master