Anyway

[GIT] 간지나게 체리픽 하기 cherry pick 🍒 IntelliJ 본문

Git

[GIT] 간지나게 체리픽 하기 cherry pick 🍒 IntelliJ

dyana 2024. 11. 12. 15:42

Git이란 건 가끔 기특하기도 하고 .. 또 날 가끔 ㅉ ㅏ증나게 하기도 하고.. 이렇게 편할 수 있나 싶기도 하면서 

또 날 자주 호 ㅏ나게 한다. 

 

현재 프로젝트에서는 여러 사람이 작업 하는 것이다 보니

각자의 branch를 따서 작업하고  > 중간 지점에서 합치고 > 개발 또는 운영 branch로 merge 하는 방식으로 진행되고 있다. 

 

순차적으로 기능이 차례차례 완성되어가면 좋겠지만 그렇데 된다면 QA가 왕섭섭해 하겠지

기능 완성 > 개발 branch에 merge > test > 운영 main branch에 merge 이런식으로 반복되는 와중에

지금 우리의 branch 작업은 기능이 완성된 이후 배포되었다면 배포 된 branch에서 또다시 branch를 따서 수정되어야 하기에

완성되었던 기능이 수정되고 에러가 발견되어 또 수정되고 하면 branch 작업이 꼬이게 된다. 

따라서 수정된 branch를 다시 merge 시켜줘야 하고 이전에 작업하던 branch에도 merge를 해줘야 한다는 말씀 ~ ~  ~ 

 

근데 merge 하는 방법 말고도 cherry pick이라는 방법이 있다. 말로만 들어봤는데 처음 써봤다. 

보통 merge를 하게 되면 이렇게 거추장스럽게 회색 한 줄이 만들어지게 되는데(나만 거추장스럽다 느낄수도)

 

cherry pick을 하면 이렇게 남지 않는다. 

 

git - cherry pick 이란? 

 

특정 커밋을 다른 branch로 가져오는 git 명령어이다. 즉 나의 branch에서 커밋을 한 이후 이 커밋 내역을 다른 branch에도 적용하고 싶을 때 사용하는 것이다. 즉 필요한 커밋만 골라서 가져올 수 있기 때문에 branch를 병합하지 않고도 원하는 커밋사항만 반영할 수 있는 유용한 기능이다. 📝 cherry pick 

 

  1. CLI에서 git 명령어로 cherry pick 사용하기
git log

 

가져오고 싶은 커밋의 ID를 확인한다. 

 

git checkout target-branch
git cherry-pick <commit-id>

 

중요 : 커밋 사항을 가져다 놓고 싶은 branch로 이동

가져오고 싶은 커밋사항의 id와 함께 cherry-pick 명령어 실행

 

git cherry-pick <commit-id1> <commit-id2> <commit-id3>

 

여러 개 커밋 가져오기 가능 ~ 

 

git cherry-pick <시작 커밋 ID>^..<끝 커밋 ID>

 

범위 지정해서 쓰기도 가능 ~ 

 

2. IntelliJ에서 쉽고도 빠르게 cherry pick 하기 

 

나의 작업 환경 (branch)의 커밋 사항을 dev로 가져오고 싶은 상황

커밋 사항을 가져다 놓고 싶은 dev로 checkout 한다. 

 

git log 창의 branch에서 내 branch를 선택해준다 

 

branch명은 가렸다. 

현재 checkout은 dev로 되어 있기에 내가 가져올 커밋사항이 아직 없는 상황인데 

내 branch로 바꾸게 되면 그 branch의 내역이 보이게 된다. 

 

 

가져오고 싶은 commit : 'del_yn 추가 및 insert문 추가' 라는 내역을 dev branch에도 적용하고 싶었다. 

오른쪽 버튼을 누르고 Cherry-Pick 눌러주면 끝이다. 

 

쉽고 빠르고 깔끔해서 좋았다. 개별 commit으로 급하게 적용해야 하거나 공유되어야 하는 경우 유용할 듯 !