밤토리
article thumbnail
728x90

안녕하세요.

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>

 

 

 


본 게시글은 아래의 글을 참고하였습니다.

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

728x90
profile

밤토리

@밤토리아이티

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!