git cherry-pick 사용법

git으로 작업하다 보면 많이 사용하는 것 중 하나가 다른 브런치에 적용된 커밋을 가져와 내 브랜치에 적용하고 싶은 경우가 있습니다. 보통 여러 브런치에서 여러 개발을 하다 보면 특정 커밋을 가져와 적용해야 이어서 개발이 가능한 경우에 사용하게 됩니다.

여기서 상황에 따라 cherry-pick를 사용하는 경우와 rebase를 사용하는 경우가 나눠지게 됩니다. 보통 브런치를 만든 부모 브런치에 다른 커밋이나 브런치가 합쳐졌을 때는 rebase를 사용합니다. 그 외에 경우에는 cherry-pick를 사용합니다.

git cherry-pick 명령어

git cherry-pick 명령어는 어떻게 동작하는지 그림으로 확인해 보자.

1
git cherry-pick 사용법 4

위 그림을 보면 새로운 브런치를 생성하게 됩니다. 그리고 Main Branch는 계속해서 커밋을 추가하면서 앞으로 나아갑니다. 여기에 새로운 브런치에 있던 커밋 작업을 Main Branch에 합치기 위해 아래와 같이 cherry-pick 명령어를 사용합니다. 여기서 cherry-pick을 할 때, 하나의 commit만 합칠 수도 있고 여러 commit을 합칠 수도 있습니다.

https://www.geeksforgeeks.org/git-cherry-pick/
git cherry-pick 사용법 5
git cherry-pick <commit hash> // 하나의 커밋을 cherry-pick 한다.
git cherry-pick <commit hash 1> <commit hash 2> <commit hash 3> // 여러 커밋을 cherry-pick 한다.
git cherry-pick <commit start hash>...<commit end hash> // 연속적인 커밋을 cherry-pick 한다.

위와 같은 명령어로 cherry-pick 할 수 있습니다.

cherry-pick 옵션과 추가 명령어

-abort 옵션

git cherry-pick -abort

cherry-pick 을 중단하고 싶을 때 사용합니다. -abort 옵션을 넣으면 cherry-pick를 중단할 수 있습니다. 이 명령어를 입력하면 cherry-pick을 실행하기 전 코드로 돌아갑니다.

-continue

git cherry-pick -continue

cherry-pick를 진행하다가 충돌이 발생했을 때 사용할 수 있는 명령어입니다. cherry-pick도 결국 코드를 합치는 작업이기 때문에 충돌이 발생합니다. 충돌이 발생하고, 충돌된 코드를 수정합니다. 그리고 위 명령어를 입력하면 계속해서 cherry-pick을 진행합니다.

cherry-pick merge

git cherry-pick -m 1 <merge commit hash>

마지막으로 cherry-pick merge 명령어입니다. merge commit을 cherry-pick 하고 싶다면 위 명령어를 사용하면 됩니다.

정리

cherry-pick 명령어는 개발자끼리 협업을 할 때 많이 사용하는 명령어입니다. 특히, 여러 branch로 작업할 때는 다른 개발자가 개발한 기능을 가져오거나 다른 branch에 구현한 기능을 가져와 개발을 지속할 때 많이 사용되곤 합니다.

위 글을 통해 cherry-pick이 익숙해진다면 좀 더 다양한 상황에서 code를 가져와 개발할 수 있는 환경을 만들 수 있습니다.

함께보면 좋은 글

참고 글

https://hbase.tistory.com/141

https://brownbears.tistory.com/606

Leave a Comment