목차
원문 : How to Collaborate On GitHub
필요한 부분만 완전 요약하여 번역하였으니 원문을 반드시 참조하세요!
Learn the Ecosystem of the Project
공헌하기 위해서는 프로젝트와 관련된 모든 문서를 읽어라. 예를 들면, 깃허브는 표준화된 CONTRIBUTING.md
를 가지고 있다. jQuery 공헌 가이드는 완벽한 예제이다. 프로젝트 생태계를 이해하는 또 다른 방법은 기존 코드베이스와 git log
를 살펴보는 것이다. 프로젝트의 문서를 전부 읽고 어휘를 습득하라.
The Pull-Request Workflow for Code Contribution
깃허브의 일반적인 워크플로우는 꽤 단순하다.
- 자신의 계정으로 target 저장소를 fork한다.
- 로컬 컴퓨터에 저장소를 clone한다.
- “topic 브랜치”로 check out하고 소스를 변경한다.
- 자신의 fork에 topic 브랜치를 push한다.
- 토론을 통해 pull request를 만들기위해 깃허브의 diff 뷰어를 사용한다.
- 요청된 변경을 만든다.
- pull 요청이 (보통 master 브랜치 안으로) merge되고 topic 브랜치는 upstream(target) 저장소에서 지워진다.
워크플로우에서 각 프로젝트마다 많은 차이가 있다. 예로, topic 브랜치의 이름 규약은 서로 다르다. 어떤 프로젝트는 깃허브 이슈의 ID #가 345일 때 bug_345
와 같은 규약을 사용한다. 어떤 프로젝트에선 더 짧은 커밋 메시지를 선호한다.
Step 1: Forking
깃허브에서 저장소를 fork한다.
Step 2: Cloning
우측 사이드바의 URL을 사용하여 저장소를 clone한다.
git clone [email protected]:jcutrell/jquery.git
Step 3: Adding the Upstream Remote
클론한 디렉토리로 변경하고, 이 지점에서 upstream remote를 추가한다.
cd jquery
git remote add upstream [email protected]:jquery/jquery.git
이렇게 하면 로컬에서 소스 변경을 Pull하고 merge할 수 있다. 이렇게:
git fetch upstream
git merge upstream/master
Step 4: Checking Out a Topic Branch
자신의 변경사항을 만들기 전에, topic 브랜치로 checkout한다.
git checkout -b enhancement_345
Step 5: Committing
이제 소스를 변경하고 변경에 대한 추적하는 커밋을 만든다.
git commit -am "adding a smileyface to the documentation."
Step 6: Pushing
자신의 fork에 topic 브랜치를 push한다.
git push origin enhancment_345
Step 7: Creating a Pull Request
최종적으로 pull 요청을 만들 것이다. 먼저 자신의 fork로 간다. “your recently pushed branches”에서 “Compare and Pull Request”를 선택한다. 그렇지 않으면 뜨랍다운에서 브랜치를 선택하고, 저장소 섹션의 우상에 있는 “Pull Request” 나 “Compare”를 클릭한다.
“How GitHub Uses GitHub to Build GitHub”에 따르면 pull 요청은 대화이다.
GitHub Issues %2B Pull Requests = Project Management Zen
이슈의 가장 놀라운 특징은 pull 요청과의 통합이다. 사용자는 키밋 메시지에 이슈 숫자 IO를 포함하여 커밋 메시지에서 이슈를 참조할 수 있다. 예를 들면:
git commit -am "Adding a header; fixes #3"
위의 커밋 메시지는 pull 요청이 받아들여지면 이슈 #3를 자동으로 닫는다.
Seek Out Secondary Channels of Collaboration
pull 요청만이 공헌할 수 있는 유일한 방법이라고 생각하지 마라. 포럼이나 IRC 대화에서도 가능하다.
볼만한 링크
-
[오픈소스 git 프로젝트에 Pull Request 보내기 Popit](http://www.popit.kr/%ec%98%a4%ed%94%88%ec%86%8c%ec%8a%a4-git-%ed%94%84%eb%a1%9c%ec%a0%9d%ed%8a%b8-pull-request-%eb%b3%b4%eb%82%b4%ea%b8%b0/) - GitHub로 남의 프로젝트에 감놓고 배놓기
- Git을 이용한 협업 워크플로우 배우기
- Git flow, GitHub flow, GitLab flow
- 카카오스토리 웹팀의 코드리뷰 경험 공유
-
[HubFlow - GitHub and the GitFlow Model Together DataSift Developers](http://dev.datasift.com/blog/hubflow-github-and-gitflow-model-together)