[GIT] 간지나게 체리픽 하기 cherry pick 🍒 IntelliJ
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
- 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으로 급하게 적용해야 하거나 공유되어야 하는 경우 유용할 듯 !