공개팀으로 Git을 운영하는데는 비공개팀과 약간의 차이가 있다. 공개팀 운영시에는 모든 사람이 공유 저장소에 대해서 쓰기 권한이 없기 때문이다. 프로젝트 관리자는 Fork를 지원하는 Git 호스팅에서 -GitHub- 기여하는 방법에 대해 가이드 해야 한다. GitHub을 예로 Pull Request는 어떤 절차로 이루어 질까?
1) 갑순이 Fork 질 하기
- 갑순이 중앙 저장소(예, ysyun)의 GitHub에서 Fork질 하여 자신의 원격 저장소(예, nulpulum)를 하나 만든다
+ GitHub의 갑순이 계정으로 로그인한다
+ GitHub의 중앙 저장소(ysyun)로 이동하여 "Fork" 버튼을 클릭하면 갑순이 계정으로 중앙 저장소(nulpulum)가 clone된다
[GitHub Fork 클릭]
- 갑순이 원격 저장소(nulpulum)를 자신의 PC 로컬 저장소로 clone 한다 : git clone <갑순이 원격저장소>
- 갑순이의 원격 저장소 이름을 origin에서 myfork로 바꾼다
+ git remote -v : default 설정된 origin 명칭 확인
+ git rename origin myfork : origin을 myfork라는 이름으로 변경
2) 갑순이 별도 브랜치 만들고 push 질 하기
- 갑순이 별도의 featureA 브랜치를 만들고 두번의 commit 질 한다
+ git checkout -b featureA : featureA 만들기
- 간혹 commit 실수 한것은 날려 버리고 싶다 : git reset --hard HEAD^ (참조)
- 갑순이의 원격 저장소(nulpulum)인 myfork에 featureA를 push 한다 (참조)
+ GitHub 의 commit 내역은 "Commit" 탭에서 확인가능하다
[GitHub Commit]
//////////////////////////////////////////
// 로컬 저장소에 새로운 브랜치 만들기
dowon /d/git-nulpulum/jmqtt_client (master)
$ git checkout -b featureA
Switched to a new branch 'featureA'
dowon /d/git-nulpulum/jmqtt_client (featureA)
$ vi license.properties
dowon /d/git-nulpulum/jmqtt_client (featureA)
$ git commit -am "modified license 1"
[featureA 9e5ce9b] modified license 1
1 file changed, 1 insertion(+)
dowon /d/git-nulpulum/jmqtt_client (featureA)
$ vi licene.properties
dowon /d/git-nulpulum/jmqtt_client (featureA)
$ git commit -am "modified license 2"
[featureA b3787b8] modified license 2
1 file changed, 1 insertion(+), 1 deletion(-)
////////////////////////////////////////////
// 원격 저장소에 새로운 브랜치 만들기
dowon /d/git-nulpulum/jmqtt_client (featureA)
$ git push myfork featureA
Username for 'https://github.com': nulpulum@gmail.com
Password for 'https://nulpulum@gmail.com@github.com':
Counting objects: 8, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (4/4), done.
Writing objects: 100% (6/6), 562 bytes, done.
Total 6 (delta 2), reused 0 (delta 0)
To https://github.com/nulpulum/jmqtt_client.git
* [new branch] featureA -> featureA
[갑순이 GitHub 저장소(nulpulum)의 featureA 브랜치]
3) 갑순이 Pull Request 질 하기
- 갑순이는 수정한 사항에 대하여 중앙 저장소(ysyun)의 관리자에게 Pull Request를 요청하여 자신이 수정한 것을 가져가라 알린다
+ 갑순이 GitHub 계정으로 들어가서 상단의 "Pull Request"를 클릭한다
[갑순이 GitHub 저장소(nulpulum)의 Pull Request 버튼 클릭]
+ Pull Request 원하는 브랜치를 선택한다
+ 갑순이 원격 저장소(nulpulum)에서 featureA를 선택하고 중앙 저장소(ysyun)에게 Pull Request를 보낸다
+ featureA에 commit 두번 한것과 파일 수정 정보등이 보인다 -Commits (2) Files Chagned (1)-
[Pull Request 요청 내역 입력한후 "Send pull request" 보내기]
+ 중앙 저장소 (ysyun)에서 Pull Request온 내역을 볼 수 있다
[중앙 저장소(ysyun)의 Pull Request 내역 보기]
- 가급적 Pull Request를 할때는 별도의 토픽 브랜치(갑순이가 만든 featureA)와 같이 만들어서 관리자에게 요청한다
+ master 브랜치와 구분하고 수정 내용을 거부할 때 쉽게 버릴 수 있다
- 갑순이 다른 브랜치를 만들어서 작업할 때는 featureA에서 하지 말고 origin/master에서 한다
+ git checkout -b featureB origin/master
<참조>
- Pro Git (p. 110)
- 2개 아이디의 Public repository를 만들어서 테스트 해보았다.
'Git, GitHub > Git Lec02' 카테고리의 다른 글
[Pro Git] Rebase 대신 Cherry-pick 사용하기 (0) | 2013.02.28 |
---|---|
[Pro Git] 비공개 대규모 팀 운영 (0) | 2013.01.28 |
[Pro Git] 비공개 소규모 팀 운영 (0) | 2013.01.28 |
[Pro Git] 커밋 가이드라인 (0) | 2013.01.25 |
[Pro Git] 협업 Workflow (0) | 2013.01.25 |