본문으로 바로가기

[GIT] cherry pick

category Helloworld!/GIT 2014. 3. 11. 10:34

cherry pick : 선별하다

revert : 되돌리다


cherry pick은 rebase를(참조) 통하여 다른 브랜치의 전체 commit 내역을 복사해오는 방식이 아닌

특정 commit 내역만을 가져오고 싶을 경우 cherry pick을 사용한다.


예를 들어 내 프로젝트안에 develop 이라는 브런치에서 commit 로그가 다음과 같이 나열되어있을 경우


1번째 commit. modify : js 수정

2번째 commit. modify : css 수정

3번째 commit. modify : index.php 마크업 수정

4번째 commit. add : style.css, script.js

5번째 commit. modify : index.php 리펙토링

6번째 commit. add : index.php


2번째로 commit한 "css 수정"만 상태를 가지고와 master에 commit 하고 싶을경우 2번째 commit log를 cherry pick하면 된다.


cherry pick commit. revert "modify : css 수정"

1번째 commit. modify : js 수정

2번째 commit. modify : css 수정

3번째 commit. modify : index.php 마크업 수정

4번째 commit. add : style.css, script.js

5번째 commit. modify : index.php 리펙토링

6번째 commit. add : index.php


cherry pick 은 하나의 commit만 가져온다.

develop 브런치에서 위와같이 여러번 commit을하며 버젼관리를 하다가, 마지막 commit 만 master 에 가져오려할 경우 cherry pick을 사용한다고 한다.

1. 우선 master 브랜치를 먼서 선택한 후

2. 다음 명령어처럼 cherry pick 을 실행하면 가장 최근 commit 한 내용만 master 브런치에 commit 된다.

git cherry-pick develop


예를 들어 다음과 같은 경우에 사용을 한다.


참고 사이트 : http://mobicon.tistory.com/230


소스트리에서는 cherry pick 할 commit log 위에 마우스 오른쪽 클릭해 메뉴중에 cherry pick을 하면 간단하게 rebase 할 수 있다.