-
Git cherry-pickGit 2021. 3. 31. 00:24반응형
다른 branch에 있는 커밋을 선택적으로 내 branch에 적용시키고 싶을 때 사용하는 명령어.
예를 들면, 프로젝트 PR을 이미 보내고 난 후에 뒤늦게 잘못된 걸 깨달았다거나 하는 상황에서,
내가 이전에 작성했던 코드들을 모두 날리지 않고 제대로 작성된 커밋들을 쏙쏙 골라서 가져올 수 있다.
git rebase를 사용하면 원하는 commit을 선택적으로 적용할 수 있지만,
git rebase는 현재 branch에서만 가능하므로 다른 branch에서 commit을 가져오고 싶다면
먼저 그 branch를 현재 branch로 merge한 후 rebase해야 하는 번거로움이 있다.
그 과정에서 발생하는 충돌은 어디서 어떻게 해결해야 하는지 감도 잡히지 않는 경우가 허다.
일일이 복사 붙여넣기 하는 것도, 생각보다 굉장히 복잡하고 힘든 작업이다.
복사 붙여넣기를 끝마쳐도, 제대로 복붙했는지 확인하고 테스트까지 다시 해야하는 건 덤.
git cherry-pick은 다음과 같이 사용한다.
git cherry-pick <commit_hash_id1> <commit_hash_id2> ...
현재 branch 2에 checkout 하고 있는 상황에서,
branch 1의 ab33cd43, 75be21cc 커밋만 골라서 branch 2에 적용하고 싶다.
// 한 개씩 체리픽 하기 git cherry-pick ab33cd43 git cherry-pick 75be21cc // 여러 개 동시에 체리픽 하기 git cherry-pick ab33cd43 75be21cc
현재 내 branch와 cherry-pick 하려는 commit 사이에 충돌이 발생할 수 있다.
선택할 수 있는 옵션은 두 가지. 바로 --continue와 --abort 이다.
■ --continue
충돌이 발생했을 때, 일단은 코드를 수정해서 충돌을 해결해야 한다.
그런 다음 git add로 수정된 코드를 올리고, git cherry-pick --continue를 통해
cherry-pick 작업을 계속해서 이어나갈 수 있다.
■ --abort
충돌이 발생했을 때, 쥰내 머리가 아프니까 그냥
cherry-pick 명령어를 입력하기 이전 상태로 돌아가고 싶다면
git cherry-pick --abort를 입력해주면 된다.
cherry-pick 작업을 중단하고, 이전 상태로 돌아갈 수 있다.
cherry-pick을 사용하면 같은 내용을 가지는 커밋이 여러 개 생겨서,
나중에는 어떤 branch에서 cherry-pick을 했는지 구분이 안 가는 경우가 생길 수 있으니 주의하라고 한다.
참고
반응형'Git' 카테고리의 다른 글
Git merge (0) 2021.03.26 git stash 명령어 (0) 2021.03.15 .gitignore가 올바르게 작동하지 않을 때 😤 (0) 2021.02.07 Git 커밋 메시지 컨벤션 (0) 2020.12.30 수정과 관련된 git 명령어 💡 (0) 2020.12.05