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
김땡땡's blog

김땡땡's blog

김땡땡