실무를 하다보면 특정 브랜치에서 커밋했던 목록들 중 급하게 우선적으로 특정 커밋들만 내보내야 될 경우가 생길 수 있습니다. 이때 Git Cherry-Pick 명령어를 사용하면 손쉽게 특정 커밋을 가져올 수 있습니다.
Cherry Pick?
다른 브랜치의 일부 커밋만 반영하고 싶을 때 사용하는 깃 명령어
TMI
cherry pick이란, 체리 한 바구니에서 제일 좋은 체리만 고르는 것에서 유래한 표현
사용방법
아래와 같이 깃 히스토리가 있다고 가정해봅시다. feat/sentry 브랜치에서 a, b, c 기능들을 추가하고 커밋한 상태인데, 금일 릴리즈에 b 커밋만 우선적으로 올려야 될 경우가 생겼습니다. (굉장히 난감한 상황이쥬?) 이때 cherry-pick 명령어를 활용하면 아-주 깔끔하게 특정 커밋만 똑 떼어서 가져올 수 있습니다.
commit 0184baffc6a5021ebfa5bef44d5b27d6ec79ca73 (HEAD -> feat/sentry)
Author: ruden91 <ruden.91@naver.com>
Date: Mon Oct 3 20:30:54 2022 +0900
feat: add c
commit e9056611263901ba9c4153fced59c7b42421347e
Author: ruden91 <ruden.91@naver.com>
Date: Mon Oct 3 20:30:42 2022 +0900
feat: add b
commit c026370b07a903f663a96b18a520b6ec0d688db6
Author: ruden91 <ruden.91@naver.com>
Date: Mon Oct 3 20:30:28 2022 +0900
feat: add a
현재 릴리즈 배포된 메인 브랜치는 아래와 같습니다.
commit 68bde58706d564f5245e5c504b05761eec179905 (HEAD -> main)
Author: ruden91 <ruden.91@naver.com>
Date: Mon Oct 3 20:22:15 2022 +0900
chore: test
commit 9853e7866aefd2c30d5c66d630e8d6f8eb139e78
Author: ruden91 <ruden.91@naver.com>
Date: Sun Aug 21 15:30:31 2022 +0900
Initial commit from Create Next App
우리가 가져올 커밋 해시값을 복사하고, 특정 브랜치에서 아래 명령어를 사용합니다.
// b 기능 수정사항의 해시값입니다.
// e9056611263901ba9c4153fced59c7b42421347e
git:(feat/b-feature) git cherry-pick e9056611263901ba9c4153fced59c7b42421347e
위 cherry-pick 명령어를 실행하면 아래 결과와 같이 깔끔하게 특정 커밋만 특정 브랜치로 땡겨올 수 있습니다.
commit cea377dc34614fb51891381be8ff499b0187567b (HEAD -> feat/b-feature)
Author: ruden91 <ruden.91@naver.com>
Date: Mon Oct 3 20:30:42 2022 +0900
feat: add b
commit 68bde58706d564f5245e5c504b05761eec179905 (main)
Author: ruden91 <ruden.91@naver.com>
Date: Mon Oct 3 20:22:15 2022 +0900
chore: test
commit 9853e7866aefd2c30d5c66d630e8d6f8eb139e78
Author: ruden91 <ruden.91@naver.com>
Date: Sun Aug 21 15:30:31 2022 +0900
Initial commit from Create Next App
'개발 > Git' 카테고리의 다른 글
Github Actions 워킹 디렉토리 설정하는 방법 (working directory default) (0) | 2022.04.25 |
---|---|
깃 특정 태그로 이동하는 방법 (How to checkout Git Tags) (1) | 2021.01.19 |
Git commit으로 issue 종료하는 방법 (close issue with commit) (2) | 2020.12.08 |
.git/index.lock file exists 문제 해결하는 방법 (0) | 2020.12.04 |
깃 커밋 메시지 컨벤션 (Git Commit Message Convention) (1) | 2020.11.20 |
이 포스팅은 쿠팡파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.