Git | GitLab

[Git] cherry-pick - 특정 커밋 반영

비번변경 2023. 5. 8. 00:57

개요

Git을 이용해 코드를 관리하다 보면 다른 브랜치에 적용된 커밋을 가져와 적용해야 하는 경우가 발생한다. 그런 경우 git rebase 또는 cherry-pick을 많이 사용하는데, 이 글에서는 cherry-pick에 대해 정리한다.

 

rebase : 2022.11.20 - [Git] rebase - 브랜치 base 재지정

 

 

cherry-pick

cherry pick이란 체리 한 바구니에 좋은 체리만 고르는 것에서 유래한 단어로, 좋은 것을 선별한다는 뜻으로 쓰인다.

git에서 cherry-pick 명령은 다른 branch에서 발생한 여러 commit 중, 특정 commit에서 발생한 수정 사항을 브랜치에 반영할 수 있도록 한다. cherry-pick 명령어 뒤에 반영할 commit hash만 지정해 주면 된다.

git cherry-pick <COMMIT>

cherry-pick은 commit을 branch에서 다른 branch로 옮기는 것이 아니라 새 commit이 늘어나는 것이다. 따라서 같은 commit이 여러 번 쌓일 수도 있기 때문에 cherry-pick이 가능하다면 merge를 사용하는 것을 더 선호하는 것 같다.

 

 

 

사용 예시

예로 들어 다음과 같은 상태의 레포지터리가 있다고 하자. main 브랜치에 modify test가, main_detached 브랜치에 Add cherry가 커밋되어 있다.

이 상태에서 main 브랜치에 Add cherry 커밋을 반영하고 싶다. 먼저 반영할 때 충돌날 여지가 없는지 확인하기 위해 커밋에서 발생한 수정사항을 살펴본다.

git checkout <BRANCH>

git log

git show <COMMIT>

반영에 문제가 없다면 반영할 브랜치로 돌아와 cherry-pick을 시도한다.

git cherry-pick <COMMIT>

정상적으로 반영이 잘 되었다. 반영한 직후의 branch graph는 아래와 같다.

 

 

 

참고 문서

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

https://www.scaler.com/topics/git/git-cherry-pick/

https://hbase.tistory.com/141

[GIT] ⚡️ 원하는 commit 가져오기 (git cherry-pick)

 

 

728x90