GitHub Flow 방식
- Pull Request와 Code Review 기능을 적극적으로 활용한 GitHub Flow 방식을 알아보자.
- GitHub Flow는 GitHub에서 제안하는 프로젝트 관리 방법이다.

- Branch 생성
- 로컬(local) 저장소에서 개발을 수행할 branch를 생성하고 Checkout 한다.
- master(default) branch는 항상 최신 상태를 유지한다.
- 다른 이유가 없다면 master(default) branch에서 작업 branch를 분기 한다.
- Branch 이름을 통해 의도를 명확하게 한다.
- Development & Commit & Push
- 개발 진행 후 commit을 남긴다.
- commit 메시지는 명확하게 작성한다.
- 원격(remote) branch를 만들고 push 한다. (수시로 push를 진행)
- 이는 하드웨어에 문제가 발생해 작업하던 부분이 없어지더라도, 원격지에 있는 소스를 받아서 작업할 수 있도록 해준다.
- PR(Pull Request) 생성
- 피드백이나 도움이 필요할 때, 그리고 merge 준비가 완료되었을 때 PR을 생성한다.
- Pull Request는 코드 리뷰를 도와주는 시스템이다.
- GitHub에서 push된 작업 branch를 Pull Request 한다.
- 원격(remote) branch가 생성되면 자동으로 Compare & pull request 버튼이 생성된다.
- Reviewers가 코드 리뷰를 진행
- 컨펌 내용 수정
- Review 받은 내용 수정 후 Resolve conversation
- git add 하기
- git commit --amend를 통해 최신 commit 덮어쓰기(하나의 commit만 생성)
- git push -f origin [branch-name] (force push를 통해서 강제로 push를 진행)
- 최종 Merge
- Reviewers는 master branch에 push한다.
- Merge한 이후 요청한 Branch는 삭제
- Close pull request 후 원격(remote) branch는 삭제한다.
IntelliJ를 이용한 GitHub Flow
- github 에서 issue 생성
- Assignees
- Labels
- Projects
- Intellij 에서 open tsck
- Clear current context (편집기에 열려 있는 모든 탭 닫기)
- Create changelist
- Create branch : (local) from (master)
- 작업
- commit
- pull request
- push를 진행할 origin branch는 Create Pull Request 진행 시 자동 생성 가능
- reviewer
- assignee
- label