[Git] Git flow, Forking Workflow

Git으로 협업하기


Git flow란?

  • Git Flow는 Git으로 형상관리를 할때 브랜치를 효율적으로 관리하기 위해 사용하는 브랜치 관리 전략(Branch management strategy)입니다.

살펴보기

Git branch의 종류는 아래 다섯가지가 존재한다.

  • master : 제품으로 출시될 수 있는 브랜치
  • develop : 다음 출시 버전을 개발하는 브랜치
  • feature : 기능을 개발하는 브랜치
  • release : 이번 출시 버전을 준비하는 브랜치
  • hotfix : 출시 버전에서 발생한 버그를 수정 하는 브랜치

Forking workflow

  • 팀장의 저장소를 Fork해서 팀원마다 각각 저장소로 자유롭게 작업을 진행한 이후 최종적인 팀원의 작업 내용은 Pull requests를 통ㅇ해 팀장의 확인 후 반영된다.

팀장 💻

1. 팀장이 Repo를 생성한다.

2. 팀장이 본인의 로컬저장소에 클론을 해온다.

$ git clone <팀장 Repo url>
$ cd <파일명>
$ git branch 

3. git flow를 이용해 작업 시작 $ git flow init

$ git flow init
$ git branch <작업명>
$ git status <상태 확인>
$ git add <작업> 
$ git commit -m <커밋 내용>

4. 작업한 내용을 원격저장소에 push

$ git push -u origin develop

5. 팀원들에게 전달

팀원 💡

1. 팀장의 해당 프로젝트의 github로 이동

2. fork를 이용해 전체 저장소 복제

3. fork한 개인 원격 저장소에서 개인 로컬저장소 생성.

$ git clone <가져온 레포 url>
$ cd <파일명>
$ git branch /* 브렌치는 아직 생성되지 않았다. */

4. issues작성
기능에 대한 issues 작성

 # Task list
   - [ ] do fizz
   - [ ] do buzz
   - [ ] do fizzbuzz

5. $ git flow init을 통해 초기화

$ git flow init
$ ls /* develop 파일들 생성 완료 */

6. 기능 개발 시작

$ git flow feature start <작업명> /* 작업 branch 생성 */
$ vi     
// 작업 후 //
$ git status
$ git add <작업>
$ git commit -m <커밋 내용> 

7. 기능 개발 닫기 & 개인 원격 저장소에 push

$ git flow featur finish do-fizzbuzz 
$ git push -u origin develop /* 첫 push. -u를 붙여진행 */

8. 팀장에게 pull request

🌠issues

개발을 끝낼 때마다 해당하는 #1 (이슈넘버) 에 대한 해결사항을 Open a pull request 에 적어줘야 한다.
#를 눌러 해당 이슈를 자동 완성할 수 있다.

팀장 Merge 후 Pull 🎯

팀장

본인 것이기 때문에 바로 pull을 받으면 된다.

 $ git pull origin develop 

팀원

팀원들은 remote를 해야한다.

/* 확인 */
$ git remote
$ git remote -v

/* 팀장의 레포 url 등록 */
$ git remote add upstream\
$ git remote -v

/* upstream 당겨오기 */
$ git fetch upstream develop  
$ git merge FETCH_HEAD
upstream 당겨오기

방법 1. pull
방법 2. fetch <- 추천!
당겨서 해당 브랜치에 반영을 바로 하는 것이 아님
당겨서 FETCH_HEAD라는 임시 브랜치에 담아놓음
FETCH_HEAD에 담긴 후에는 원하는 부분만 당겨올수도 있고 전체를 당겨올 수도 있음.
(이 때 바로 당기게 되면 pull과 동일하게 동작한 것과 같다.)


Reference

좋은 웹페이지 즐겨찾기