728x90
반응형

git 을 사용하면서 cherry pick 이라는 것이 있다고 해서 정리해보려고 한다.

 

git cherry pick 이란

git 에서 cherry-picking 이란 하나의 브랜치에서 단일 커밋을 가져와서 다른 브랜치에 추가하는 것을 말한다.
단일 커밋에 포함된 변경 사항이 필요하지만 해당 브랜치의 전체 내용을 다른 브랜치로 가져올 수 없거나 가져오고 싶지 않은 경우
내가 원하는 커밋을 가져올 수 있게 골라야 한다.
이 때 cherry-picking 을 통해 원하는 커밋을 가져와 다른 브랜치에 추가할 수 있도록 해준다.

 

https://docs.gitlab.com/ee/user/project/merge_requests/cherry_pick_changes.html#:~:text=In%20Git%2C%20cherry%2Dpicking%20is,not%20added%20to%20the%20target.

 

예를 들어, 위의 사진과 같이 main 브랜치와 develop 브랜치가 있고 순서대로 커밋이 된다고 할 때
develop 브랜치의 B 커밋을 가져와 main 브랜치에 E 커밋 다음에 추가해준다. 그 후에 G 커밋이 추가된다.

 

cherry-pick 은 언제 사용하면 좋을까?

cherry-pick 을 사용해보고 싶지만 언제 사용해야 좋을지 잘 모르겠다. 오히려 해당 커밋만 가져와서 추가한다고 하면 더 헷갈릴 것 같기도 하고 다른 팀원이 히스토리를 찾아볼때에도 헷갈리는 요소가 있지 않을까 하는 생각도 들었다.

 

그래서 어떤 경우에 사용할까 찾아보니 다음과 같을 때 사용하면 좋다고 한다.

 

팀과 협업할 때 다른 동료가 만들고 있는 기능이 있을 때 merge 할 때까지 시간이 오래 걸린다면 동료가 만든 기능이 들어있는 commit 만 가져와서 사용할 수 있다고 한다.
예를 들어, 내가 먼저 개발이 끝난 상태에서 동료의 기능을 추가해보고 싶을 때 개발이 완료된 commit 만 가져와서 내 브랜치에 적용시켜볼 수 있다.

 

새로운 기능을 개발하는 동안 기존에 있었던 기능에 버그가 생겼을 경우에 이 버그를 패치하기 위해서 명시적 커밋을 만들어 해당 커밋만 가져와 main 브랜치에 배포할 경우 사용할 수 있다고 한다.

 

또 한가지 실수로 Pull Requests 를 merge 하기 전에 닫아버렸을 때 cherry-pick 을 사용해서 해당 commit 을 가져와서 살릴 수 있다고 한다.

 

 

사실 직접 사용해보지 않았기 때문에 체감이 잘 되지 않는다.
어떻게 보면 cherry-pick 을 사용해야하는 경우가 생기지 않아야 좋은 게 아닐까 하는 생각도 들었다.
그래도 나중에 사용해볼 기회가 있다면 사용해봐야겠다.

 

 

 

 

- 참고 사이트

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

 

Git - git-cherry-pick Documentation

git cherry-pick master Apply the change introduced by the commit at the tip of the master branch and create a new commit with this change. git cherry-pick ..master git cherry-pick ^HEAD master Apply the changes introduced by all commits that are ancestors

git-scm.com

https://docs.gitlab.com/ee/user/project/merge_requests/cherry_pick_changes.html#:~:text=In%20Git%2C%20cherry%2Dpicking%20is,not%20added%20to%20the%20target.

 

Cherry-pick changes | GitLab

GitLab product documentation.

docs.gitlab.com

https://inpa.tistory.com/entry/GIT-%E2%9A%A1%EF%B8%8F-%EC%9B%90%ED%95%98%EB%8A%94-commit-%EA%B0%80%EC%A0%B8%EC%98%A4%EA%B8%B0-cherry-pick#:~:text=git%EC%9D%84%20%EC%9D%B4%EC%9A%A9%ED%95%B4%20%EC%BD%94%EB%93%9C%20%EA%B4%80%EB%A6%AC,%EB%AA%85%EB%A0%B9%EC%96%B4%EA%B0%80%20cherry%2Dpick%20%EC%9D%B4%EB%8B%A4.

 

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

원하는 commit 가져오기 git을 이용해 코드 관리를 하다보면 커밋을 다른 브랜치에 잘못 하거나, 요구사항이 바뀌어 필요 없는 커밋이 생기거나, 코드 의존성(dependency) 때문에 다른 사람의 커밋 중

inpa.tistory.com

 

728x90
반응형
복사했습니다!