다른 브랜치에서 내가 원하는 커밋만 골라서 가져올 수 있는 커맨드가 있다. 알아두면 정말 유용하기 때문에 블로그에 정리해 두려고 한다.
체리픽(cherry-pick)이 필요한 상황
test 브랜치에서 두개의 작업을 수행하고 각각 커밋했다. (커밋 순서 : Add get_Sum_ver1 function → Add get_Sum_ver2 function) 그리고 나서 다시 premium 브랜치로 이동해서 test 브랜치를 합치려고 했는데(머지) 두번째 커밋은 반영하지 않고 첫번째 커밋만 반영해야 하는 상황이 되었다.
내가 원하는 커밋만 골라서 가져오기
위의 상황에서 최종 버전이 아닌 내가 원하는 커밋만 골라서 합칠 수 있는 커맨드가 있다.
git cherry-pick 커밋아이디
체리 픽은 어떤 제품이나 서비스의 가성비가 좋고 인기 있는 특정 요소만을 골라서 합리적으로 소비하려는 현상을 가리키는 경제 용어이다. 지금 공부하는 것과 관련은 없지만 이 용어가 더 궁금하다면 아래 링크를 클릭하면 된다.
https://namu.wiki/w/%EC%B2%B4%EB%A6%AC%ED%94%BC%ED%82%B9
체리피킹 - 나무위키
이 저작물은 CC BY-NC-SA 2.0 KR에 따라 이용할 수 있습니다. (단, 라이선스가 명시된 일부 문서 및 삽화 제외) 기여하신 문서의 저작권은 각 기여자에게 있으며, 각 기여자는 기여하신 부분의 저작권
namu.wiki
다시 예제로 돌아가서... 첫번째 버전인 Add get_Sum_ver1 function 만을 합치기 위해서는 해당 커밋 아이디를 알아야 할 필요가 있다. 커밋 히스토리를 조회해서 해당하는 아이디를 찾았다.
git log --pretty=oneline --all --graph
그 다음 git cherry-pick f6a9 라는 커맨드를 실행했다. 그러면 컨플릭트(conflict)가 발생하는데 해결방법은 다른 컨플릭트와 동일하다.
충돌이 발생한 코드를 알맞게 수정한 후 다시 Staging Area로 옮기고 커밋해서 마무리! 내가 원하는 코드만 premium 브랜치로 잘 옮겨진 것을 확인할 수 있었다.
체리픽(cherry-pick) 취소하기
완료한 체리픽을 취소하는 방법도 간단하다. 머지를 취소하는 커맨드는 git merge --abort 라고 예전에 한 번 소개했던 적이 있는데, 체리픽의 경우도 --abort 옵션을 사용하면 쉽고 빠르게 이전 코드로 돌아갈 수 있다.
git cherry-pick --abort
'개발 도구 > Git' 카테고리의 다른 글
버전관리가 필요 없는 파일 관리(.gitignore) (0) | 2022.12.22 |
---|---|
커밋 여러개를 하나로 만들고 싶을 때(git reset --soft) (0) | 2022.12.22 |
실수로 다른 브랜치에서 작업했을 때(git stash list/apply/drop/pop) (0) | 2022.12.15 |
작업중인 코드 임시 저장하기(git stash) (0) | 2022.12.14 |
머지 기록 없이 깔끔한 커밋 히스토리 관리하기(git rebase) (0) | 2022.12.13 |
댓글