원하는 부분만! git cherry-pick

starkensin·2020년 8월 15일
0
post-thumbnail

Cherry-pick? 체리를 먹는다?

cherry picking 이라는 표현은 위키피디아에 의하면 다음과 같은 의미를 찾을 수 있습니다.

체리 피킹(cherry picking), 증거 은닉의 오류 또는 불완전한 증거의 오류는 모순될 만한 중요한 비율과 관련이 있는 개별 사례, 특정 상황과 관련된 해당 사례나 해당 입장과 상충될 수 있는 자료의 상당 부분을 무시하고 본인의 논증에 유리한 사례만 선택하는 논리 오류이다. by 위키피디아

이처럼 cherry-pick은 케익에 올려진 탐스러운 체리를 골라 먹는 행위처럼 얌체 같이 무언가를 콕 찝어 사용하는 부정적인 의미로도 사용되곤 합니다.
하지만 git에서 원하는 커밋만 쏙쏙 뽑아올 수 있게 해주는 cherry-pick은 잘 사용하면 자칫 귀찮아질 수 있는 상황에 우리를 도와주는 유용한 명령어 중 하나입니다.

언제 유용할까?

그러면 어떨 때 사용할 수 있을까요?
여러 상황이 있을 수 있겠지만
cherry-pick이 우리를 도와줄 수 있는 구체적인 한가지 상황을 예시로 생각해 보도록 하겠습니다.

갑자기요?!

한 이슈를 할당받아서 브랜치에서 작업을 하다가 보니까 갑자기 여러가지 기능이 한 이슈에 있다는 것을 알게된 상황이 있을 수 있습니다. 그래서 갑작스럽게도 이슈를 쪼개서 동료들과 업무를 재분배하고, 각 기능을 나눠서 작업을 하려 합니다.

예를 들어 기능 1과 기능 2 개발을 현재 current 하나의 브랜치에서 진행중이라면

기능1 -> feature1 브랜치
기능2 -> feature2 브랜치

위와 같이 나눠야 할 것입니다.
갑작스럽지만 당황하지 말아요! cherry-pick 명령어가 우리를 도와줄거에요!

실습

cherry-pick 명령 사용법
커밋 하나 가져오고 싶을 때: cherry-pick [가져올 커밋 해시]
여러 커밋을 가져오고 싶을 때: cherry-pick [시작 커밋 해시] [끝 커밋 해시]

현재 ourwork 브랜치에서 bugfix도 하고 feature를 개발하고 그에 따른 test도 진행한 커밋로그가 있습니다.

현재 디렉토리는 다음과 같이 구성되어 있네요

한 브랜치에 이와 같이 여러 작업을 진행하기 보다는 명확한 목적으로 브랜치를 나누고 동료와 업무를 분담해야겠습니다.
yourwork 브랜치에서 기능을 계속 개발하고
mywork 브랜치에서 버그를 고치고 그에 대한 테스트를 진행하는 걸로 합시다!




git cherry-pick [가져올 싶은 커밋 해시값] 명령을 통해 mywork 브랜치에 bugfix와 test에 대한 커밋을 각각 가져오고 디렉토리를 확인해봤어요.

마찬가지로 yourwork 브랜치에는 feature에 대한 커밋을 가져왔어요


짠! 이제 원래 ourwork 한 브랜치에서 모두 커밋되어 있던 내용들이
각 브랜치에 우리가 원하는 대로 나뉜 것을 확인할 수 있습니다!

0개의 댓글