본문 바로가기
GIT

[Git] 다른 브랜치에서 특정 커밋만 가져오는 방법, 체리픽(CherryPick)

by doogfoot 2024. 10. 28.

 

정의

 

체리픽(cherry pick)은 다른 브랜치에서 현재 브랜치로 특정 커밋만 선택하여 가져오는 Git기능을 말합니다.

 

 

일반적으로 브랜치 간에 병합(merge)을 하게 되면 불필요한 커밋도 같이 가져옵니다.

그래서 내가 원하는 커밋만 골라서 가져오고 싶을때 어떻게 해야 되지라는 고민을 한 적이 있습니다.

 

이때 체리픽 기능을 사용하면 원하는 동작을 수행 할 수 있습니다.

 

체리픽은 다음과 같은 상황에 사용하면 좋습니다

1. 필요한 커밋만 적용하고 싶을 때

2. 긴급 수정 사항을 다른 브랜치에 적용하고 싶을 때

3. 병합없이 선택적으로 변경사항을 적용하고 싶을 때

 

 

체리픽을 사용하는 명령어는 다음과 같습니다.

commit-hash는 가져오고 싶은 커밋의 해시값(고윳값)을 의미합니다. 

git cherry-pick <commit-hash>

 

 

또한 아래와 같이 여러 커밋을 동시에 가져올수도 있습니다.

git cherry-pick <commit1-hash> <commit2-hash> <commit3-hash>

 

 

소스트리(sourcetree)에서 체리픽을 하는 방법은 가져오길 원하는 커밋을 우클릭하여 체리 픽 버튼을 클릭하면 됩니다.

 

 

 

주의 사항

 

1. 충돌 발생 가능 : 체리 픽은 특정 커밋을 현재 브랜치에 가져오기 때문에 히스토리에 따라 충돌(conflict)이 발생할 수 있습니다. 일반적으로 merge 할 때 충돌을 해결하는것과 동일하게 수동으로 충돌을 해결할 수 있습니다.

2. 커밋 중복 문제 : 이미 존재하는 커밋을 다시 체리픽 하는 경우 동일한 내용이 불필요하게 중복될수 있습니다. 커밋 히스토리를 확인하고 가져오는 것이 좋습니다

3. 커밋 히스토리 관리 : 체리픽은 커밋을 잘라내서 가져오는게 아니라 복사(copy)하는 방식입니다. 즉, 원본 브랜치의 커밋 id와 가져온 커밋 id가 다르며 히스토리도 달라질 수 있습니다. 현재 브랜치에서 새로운 커밋으로 생성된다는 점을 알고 있어야 합니다.

 

댓글