회사에서 Git 을 사용하는데 개발브랜치에서 소스를 반영하고 테스트 후 운영브랜치에 git cherry-pick으로 반영을 하는데 이 cherry-pick 이 어떤 기능인지 모르고 써왔다. 이번에 운영에 소스를 반영할 때 문제가 생길수 있는 부분을 미연에 방지하고자 좀 더 git cherry-pick 이 어떻게 동작하고 무슨 기능인지 알아 보려고 한다.
git cherry-pick 이란?
- 특정 커밋만 가져오는 작업.
git cherry-pick 을 사용해야 하는 경우
- 여러 브랜치로 작업을 하는 중, 다른 브랜치에 있는 기능을 현재 브랜치에서 확인하고 싶을 때
- 그러니까 팀과 협업을 하는 도중, 나는 백엔드작업을 하고 다른 팀원은 프론트작업을 하는 도중
css 파일만 commit을 했다고 한다. 이때 나는 merge를 하지 않고 그 css파일만 반영해서 확인하고
싶을 떄 그 commit만 git cherry-pick을 하면 된다.
- 그러니까 팀과 협업을 하는 도중, 나는 백엔드작업을 하고 다른 팀원은 프론트작업을 하는 도중
- 버그 수정을 해야할 때
- 이번에 주문내역조회 기능을 개발하고 서버에 반영을 했다. 그 후 상품주문하기 기능을 개발하던 도중
주문내역조회 기능에 버그가 있다는 무서운 소리를 듣는다. 이 때 빨리 문제가 있는 소스를 수정 후 commit
을 한다. 개발 브랜치에서 commit을 운영 브랜치에 git cherry-pick 을 사용하여 이 커밋만 반영하여 문제를
해결한다.
- 이번에 주문내역조회 기능을 개발하고 서버에 반영을 했다. 그 후 상품주문하기 기능을 개발하던 도중
방법
# git branch
master
develop
이렇게 두개의 브랜치가 있습니다. master는 지금 운영중인 브랜치고, develop는 개발 후 반영될 코드죠.
근데 갑자기 (예를들어)UI상의 오타가 발견되었어요. 이런 경우 master와 develop에 모두 반영되어야 하죠.
# git checkout master
# git commit -am "fixed: typo"
# git log --pretty=oneline
b14b975 fixed: typo
9f57292 ....
....
이렇게 master 에 반영이 되었습니다. 이 내용을 develop에 반영하려면 다음과 같이 하면 됩니다
# git checkout develop
# git cherry-pick b14b975
# git log --pretty=oneline
23fa1e76 fixed: typo
dd0f27c ...
...