본문으로 바로가기

git cherry-pick : 원하는 커밋을 가져와야 할때

category GIT 2021. 5. 4. 01:46

회사에서 Git 을 사용하는데 개발브랜치에서 소스를 반영하고 테스트 후 운영브랜치에 git cherry-pick으로 반영을 하는데 이 cherry-pick 이 어떤 기능인지 모르고 써왔다. 이번에 운영에 소스를 반영할 때 문제가 생길수 있는 부분을 미연에 방지하고자 좀 더 git cherry-pick 이 어떻게 동작하고 무슨 기능인지 알아 보려고 한다.

git cherry-pick 이란?

  • 특정 커밋만 가져오는 작업.

git cherry-pick 을 사용해야 하는 경우

  1. 여러 브랜치로 작업을 하는 중, 다른 브랜치에 있는 기능을 현재 브랜치에서 확인하고 싶을 때
    • 그러니까 팀과 협업을 하는 도중, 나는 백엔드작업을 하고 다른 팀원은 프론트작업을 하는 도중
      css 파일만 commit을 했다고 한다. 이때 나는 merge를 하지 않고 그 css파일만 반영해서 확인하고
      싶을 떄 그 commit만 git cherry-pick을 하면 된다.
  2. 버그 수정을 해야할 때
    • 이번에 주문내역조회 기능을 개발하고 서버에 반영을 했다. 그 후 상품주문하기 기능을 개발하던 도중
      주문내역조회 기능에 버그가 있다는 무서운 소리를 듣는다. 이 때 빨리 문제가 있는 소스를 수정 후 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 ...
...