본문 바로가기
Computer Engineering/Tip

[git] 특정한 branch의 pull request에 대해서 checkout 하기

by 임은천 2015. 6. 27.

간혹 라이브러리들 중에 pull request에 대해서 clone을 수행해야 할 때가 있다. 이게 무슨 의미냐면, 가령 caffe라는 라이브러리가 여러 개발자에 의해서 개발되고 있다고 하자. 그리고 개발 주요 내용은 dev라는 branch에 담겨 있다고 하자(사실상 caffe의 dev branch는 유지 되지 않는 것으로 나타나지만..). 개별 개발자들은 미래에 포함될 수 있는 후보 소스 코드들을 pulling한 상태로 가지고 있게 된다. 물론 commit 권한이 있으면 이 pulling된 내용을 해당 branch에 포함시킬 수도 있을 것이다. 어쨌든, 개발을 하다 보면, 내가 하려던 내용을 이미 남이 구현한 것을 발견하는 경우가 아주 아주 많다. 우리는 dev라는 branch에서 특정 pull request가 내가 지금 하려는 내용과 정확히 일치하는 것을 알게 되었다. 이제 그 내용을 내가 처음부터 개발하는 대신에 그 내용을 참고해서 확장해보고 싶다. 이제 해보자.


가장 먼저 clone을 수행할 때는 정확한 브랜치 이름을 적는다. 가령 우리는 caffe라는 라이브러리의 master라는 기본 branch 대신에 dev라는 branch를 clone할 것이다.


git clone https://github.com/BVLC/caffe.git -b dev

위와 같이 명력을 적게 되면 master branch 대신에 dev 브랜치를 clone하게 된다. 이 때 기본적으로 아무런 주소도 적지 않았기 때문에 caffe라는 폴더가 생성될 것이다.


cd caffe


이제 여기에서 우리는 특별한 pull request에 대해 관심이 있고, 그에 관련된 코드를 참고하고 싶다. 그러므로 다음과 같이 수행한다.


git fetch https://github.com/BVLC/caffe.git pull/[pull_id]/head:pull_[pull_id]


여기에서 pull_id는 우리가 관심 있어하는 pull_id로 수정하면 된다. 이를 수행하게 되면 긴 pull id가 단순히 pull_xxx 형태로 바뀌게 된다. 이제 다음으로는 branch를 해당 pull id로 바꿔주면 된다.


git checkout pull_[pull_id]


위와 같이 수행하게 되면,해당 pull request에 속한 내용이 local 파일 시스템에 존재하게 된다.

댓글