grep

Engineering

git cherry-pick: 다른 브랜치의 일부 커밋만 반영하고 싶을 때

NHN

2015년 11월 30일

원문에서 보기 ↗

git-logo.png

보통 프로젝트를 진행할때는 master 브랜치만 릴리즈 하면서 운영을 하게 되는데요, 가끔 중규모/대규모 개편을 하게 되면 브랜치 두개를 동시에 관리를 해야 하는 애로사항이 있습니다.

# git branch
 master
 next-release

이렇게 두개의 브랜치가 있습니다. master는 지금 운영중인 브랜치고, next-release는 다음 대규모 개편때 반영될 코드죠. 근데 갑자기 (예를들어)UI상의 오타가 발견되었어요. 이런 경우 master와 next-release에 모두 반영되어야 하죠.

# git checkout master
# git commit -am "fixed: typo"
# git log --pretty=oneline
b14b975 fixed: typo
9f57292 ....
....

이렇게 master 에 반영이 되었습니다. 이 내용을 next-release에 반영하려면 다음과 같이 하면 됩니다

# git checkout next-release
# git cherry-pick b14b975
# git log --pretty=oneline
23fa1e76 fixed: typo
dd0f27c ...
...

참고: git flow, 즉 feature/BTS-### 같은 브랜치를 따서 merge 하는 방식으로 운영하는 경우, 굳이 cherry-pick을 이용할 필요까지는 없습니다. single master branch 위에서 작업하는 방식으로 진행하는 경우에 유용하죠.

http://git-scm.com/docs/git-cherry-pick