본문 바로가기
SW Programming/형상관리

git cherry-pick으로 특정 commit 머지하기, cherry-pick 옵션

by Crystal.k 2019. 10. 28.

A Branch의 특정 commit을 B Branch로 머지하고 싶을 때는 어떻게 해야할까?


"Cherry pick" 은 다른 브랜치에 있는 커밋을 선택적으로 내 브랜치에 적용시킬 때 사용한다.
Cherry-pick : 동사. 최고를 선별하다.
$ git cherry-pick [commit id]  //해당 커밋 아이디를 반영하고 Commit수행.
$ git cherry-pick -n [commit id]  //해당 커밋 아이디를 반영하고 ADD 수행하고 Commit은 안함.


cherry-pick 하려는 커밋과 내 브랜치가 comflict 날 때?

1. Conflict 해결하고 cherry-pick 
2. git add  //수정된 코드를 올린다. 커밋 다시 할 필요 없음. 
3. git cherry-pick --continue // 다시 진행 cherry-pick 중단 
4. git cherry-pick --abort //  cherry-pick 이전으로 돌아 간다. 

cherry-pick이외에도 git rebase라는 명령어로 원하는 커밋을 선택적으로 고를 수 있다.
하지만, git rebase는 현재 브랜치 위에서만 가능
다른 브랜치에서 commit을 가져오고 싶다면 먼저 그 브랜치를 현재 브랜치로 merge한 후 rebase해야 하는 번거로움이 있다.

cherry-pick은 그렇게 권장하는 명령어는 아님.
cherry-pick을 하는 경우 같은 내용을 갖고 있는 커밋이 여러개 생기기 때문에 나중에는 누가 누굴 cherry-picking했는지 모르는 상황이 생길 수도 있다. 부득이한 경우에만 사용하기.



cherry-pick 옵션

반응형

댓글