안녕하세요.
Git의 명령어 중 Cherry-pick 에 대해서 소개하고자 합니다.
Cherry-pick은 동일/다른 브랜치의 Commit (id)중 원하는 Commit (id)을 현재 브랜치에 가져오는 방법입니다.
모든 상황에서 쓰이는건 아니지만, 아래의 상황에서는 유용하게 사용할 수 있습니다.
📌 Cherry-pick을 써야하는 상황의 예시
- [긴급 버그 수정]
이번에 기능 개선으로 메인브랜치에 올라간 소스코드 중 버그 수정이 필요하다고 한다.
메인 브랜치는 그간, 개발자/운영자들의 PR/MR 요청으로 Commit들이 쌓여진 상태이다.
시스템 안정화를 위해 긴급으로 올라간 문제의 소스를 원복하거나 지웠다.
해당 Commit(들)은 개발 기능이 커서 다음에도 꼭 필요한 기능 인데, 새롭게 개발하기엔 너무 멀리온것같다.
- 마침 다음번 개선 작업을 위해 작업중인 브랜치가 있었는데 그 브랜치에도 가져오면 좋을것같다.
- 혹은 문제의 Commit일부를 가지고 내 브랜치에서 분석/수정/개선 할 것이다.
- [MR/PR 요청]
소스코드를 revert를 하면서, MR/PR 요청시 revert 이전의 Commit 내용을 가지고 올 수 없을 때
- [Co-work]
각기 다른 브랜치에서 개발 도중 꼭 필요한 Commit(들)을 가지고 오고 싶을때
- EX) 원하는 디자인(CSS)/기능이 다른 브랜치 Commit 에 올라와 있는데 필요한 상황
사용 방법
1. Cherry-pick하고자 하는 commit id를 찾는다.
- git reflog, git log, gui등 찾는 방법에는 여러가지가 있다.
git reflog
git log
git reflog
git log
2. Cherry-pick으로 가져오고자 하는 작업 중이었던 브랜치로 이동한다. [옵션]
git checkout develop
3. Cherry-pick 하여 원하는 Commit을 가져온다.
예를들어 1번의 title을 수정한 e307dcd만 가져올것이다.
ex) git cherry-pick e307dcd
commit을 여러개를 가져오고 싶을경우
git cherry-pick e307dcd 66dc270 등 아래처럼 사용하면 된다.
git cherry-pick <commitId>
git cherry-pick <commitId1> <commitId2>
⛏ 그 외 유용한 Cherry-pick 관련 명령어
- cherry-pick을 했는데 컨플릭이 발생했다. 먼저, Conflict된 소스를 확인 후 수정한다.
git add 수정 파일
git cherry-pick --continue
- Cherry-pick 한 것을 취소하고싶다.
git cherry-pick --abort
- merge commit을 cherry pick 하고싶다
$ git cherry-pick -m 1 <merge-commit>
본 게시글은 아래의 글을 참고하였습니다.
'ETC > Git' 카테고리의 다른 글
[GIT] Stash - 작업중인 내용을 임시저장하고 다른 브랜치로 이동하기 (0) | 2024.04.22 |
---|---|
[GIT] Bitbucket - PR(Pull Request) Template 만들기 (0) | 2024.01.06 |