Git - git을 이용한 협업

  • PM과 팀원들이 깃허브를 통해 개발 협업을 진행 할 때,
  • 로컬저장소 develop 브런치와 원격저장소 develop 브런치 사이에서 push와 pull을 사용하여 협업을 진행하게 된다.
  • 아래와 같이 PM과 팀원 간 협업 절차를 간략하게 나타내보았다.

PM 1) 깃허브 organization 생성

Screenshot from 2019-05-29 14-16-48

- 여기서 New organization 클릭 > Organization name : wps-blog > Create organization

PM 2) 팀원 초대

- 함께 프로젝트 진행할 팀원 초대 및 권한 설정(read -> write)

PM 3) 깃허브 new repository 생성

blogproject

PM 4) 깃허브 repository 경로 복사

https://github.com/wps-shk/blogproject.git

PM 5) 생성한 repository에 업로드할 디렉토리 경로로 이동

$ cd blog_project(디렉토리 명)

PM 6) git init

해당 디렉토리에 git 초기화

PM 7) git flow init

- 대표 branch 모델인 git flow를 이용한 초기화(기본값으로 설정 시, 모두 enter)
- git flow 다운로드 : https://github.com/nvie/gitflow

PM 8) git remote add [원격저장소 명] [repository 경로]

- 생성한 repostiory 경로(원격 저장소)를 origin으로 명명
ex) git remote add origin https://github.com/wps-shk/blogproject.git

PM 9) git add [변경된 파일]

- 변경본 반영 리스트 작성
    ex) git add -A (현재 디렉토리에서 변경한 모든 파일 추가)

PM 10) git commit

- 로컬 저장소에 변경 사항 반영
    ex) git commit -m '변경 내용 description'

PM 11) git push [원격저장소 명] develop

- 원격저장소에 develop branch에 있는 내용 push
    ex) git push origin develop

팀원 1) git pull [원격저장소 경로] [로컬 브런치 명]

- 원격저장소에 있는 파일을 내 로컬 브런치로 pull(fetch + merge)
    ex) git pull https://github.com/wps-shk/blogproject.git  
- 'fatal: refusing to merge unrelated histories' 에러 발생 시, 아래와 같이 명령어 실행
    
1
$ git pull origin[원격 저장소] develop --allow-unrelated-histories

PM 12) git flow feature start [브런치 명]

- git flow 명령어를 이용한 feature branch 생성
    ex) git flow feature start models

PM 13) git add [변경된 파일]

- 변경본 반영 리스트 작성
    ex) git add -A

PM 14) git commit

- 로컬 저장소에 변경 사항 반영
    ex) git commit -m '변경 내용 description'

PM 15) git push [원격저장소 명] [브런치 명]

- 해당 브런치에 반영된 변경내용을 원격저장소에 push
    ex) git push origin feature/model

PM 16) 원격저장소 develop에 pull request

- 원격저장소에 push 이후, 깃허브에 pull request 진행
    (compare: develop -> base: develop)

팀원 2) 팀원이 pull request 승인

- 깃허브에서 pull request 승인

PM 17) git flow feature finish [브런치 명]

- push 한 브런치 삭제
    ex) git flow feature finish feature/model
    -> 자동으로 로컬저장소 develop 브런치에 merge되고 삭제

팀원 3) git pull [원격저장소 주소]

- 팀원이 원격저장소의 develop 브런치 내용 pull로 fetch + merge 진행 
    ex) git pull https://github.com/wps-shk/blogproject.git

팀원 4) git flow feature start [브런치 명]

- 로컬저장소에 feature 브런치 새로 생성
    ex) git flow feature start views 

팀원 5) git add [변경된 파일]

- 변경본 반영 리스트 작성
    ex) git add -A (변경한 모든 파일 추가)

팀원 6) git commit

- 로컬 저장소에 변경 사항 반영
    ex) git commit -m '변경 내용 description'

팀원 7) git push [원격저장소 명] [push할 브런치]

- 원격저장소 develop 브런치에 feature/views 브런치 push
    ex) git push origin feature/views

팀원 8) 원격저장소 develop에 pull request 진행 및 승인

- PM에게 pull request 진행 및 승인
    (compare: develop -> base: develop)

팀원 9) git flow feature finish [브런치 명]

- push 진행한 feature/views 브런치 삭제 및 develop에 merge
    ex) git flow feature finish views

PM 18) 원격저장소 develop 브런치 pull

- 로컬저장소 develop 브런치에서 최근에 merge된 원격저장소 develop 브런치 pull
    ex) git pull https://github.com/wps-shk/blogproject.git

앞서 설명한 절차 반복