* master 브랜치 기반의 PR(pull request) 



먼저 github 원격 저장소를 내 저장소로 fork한다. 


내 github 저장소를 origin, 원격 githubub 저장소를 real이라고 지정한다. 




# git clone https://github.com/samuel-kim/optools.git


# git remote add real https://github.com/cassandra/optools.git


# git remote -v


origin https://github.com/samuel-kim/optools.git (fetch)

origin https://github.com/samuel-kim/optools.git (push)

real https://github.com/cassandra/optools.git (fetch)

real https://github.com/cassandra/optools.git (push)




내 저장소의 master 브랜치를 기반으로 새로운 브랜치를 만든다. 


git checkout -b fix_errata


코드 수정하고 푸시한다. 


git add .

git commit -m 'fix errata'

git push origin




원격 github 웹 페이지에 접속하면 "Compare & pull reqeust"이 보인다.

어느 브랜치에 PR할지 결정한다. 


PR이 완료되면, master 브랜치로 이동한다.


git checkout master


기존 브랜치를 삭제한다. 


git branch -d fix_errata


리모트 브랜치를 삭제한다. 


git push origin --delete fix_errata



real의 master를 origin의 master에 merge한다. 즉 원격 github 저장소의 master에 머징된 내용(새로워짐)을 내 저장소의 master(구버전)로 병합한다. 


현재 origin master로 되어 있다. origin master(내꺼)를 기준으로 원본 real의 master(기준)의 내용을 rebase한다. 


$ git branch -l

* master


$ git rebase real/master



origin master에 push한다. 


git push origin origin/master





이미 origin 저장소의 브랜치로 checkout된 상태에서 

저 멀리 real 은 코드 푸시가 다량으로 일어날  있고, 시간이 지나면서 내 저장소인 origin과의 소스 커밋 차이가 발생한다.


그 때는 브랜치에서 다음 커맨드를 실행해 브랜치 상황을 살펴 본다.


git pull real



만약 master만 real 브랜치의 새로운 버전으로 다운받고 싶다면 다음 커맨드를 실행한다.


git pull real master


그리고 push하면 동일하게 맞춰진다. 


git push 





Posted by 김용환 '김용환'