Git Cherry Pick 내가 원하는 커밋만 가져오기

mollog·2021년 2월 4일
2

급하게 작업을 하다 보면 브랜치 관리에 소홀해지기가 정말 쉬운 것 같습니다 😥
실무에서 크게 A B C 프로젝트를 진행 중인데 이 프로젝트들을 하나의 스토리북으로 컴포넌트 관리를 하기 위해 컴포넌트 문서화 작업에만 사용하는 브랜치가 필요한 상황이었고...

아래와 같이 storybook이라는 브랜치를 생성 후 A, B, C 각각의 작업에서 스토리북에 기록시켜두고 싶은 커밋만 쏙쏙 골라서 반영할 방법을 찾고 있었습니다.

Cherry Pick

다른 브랜치의 일부 커밋만 반영하고 싶을 때 사용하는 깃 명령어

히스토리를 갖고 있는 해당 줄기(브랜치)를 전부 다 가져오고 싶은 게 아니라 특정 커밋만 골라내서 가져올 수 있는 깃 명령어, 체리픽을 사용해보았습니다.

소스트리에서 사용하는 법

예를 들어 A라는 프로젝트의 수많은 곁가지 feature/ 브랜치들 중 달력 컴포넌트 버그를 수정한 컴포넌트만 가져오고 싶을 때

  1. 반영되어야하는 브랜치로 체크아웃한 후 (스토리북)
  2. 반영하고 싶은 브랜치의 커밋에 오른쪽 마우스를 눌러 체리픽 클릭

위와 같이 내가 반영하고 싶은 커밋의 파일들만 가져올 수 있습니다.

깃 명령어에서 사용하는 방법

# git branch
 master
 next-release

위와 같이 두 개의 브랜치가 있다고 가정하고 의 master의 특정 커밋을 next-release에 적용하고 싶을 땐

# git checkout master
# git log --pretty=oneline
b14b975 fixed: typo
9f57292 ....

git log를 이용해 가져오고 싶은 커밋의 id를 확인한 뒤 (b14b975)

# git checkout next-release
# git cherry-pick b14b975
# git log --pretty=oneline
23fa1e76 fixed: typo
dd0f27c ...
  1. 반영하고 싶은 브랜치 next-release로 체크아웃
  2. b14b975 id를 체리픽

🤭 여태까지 특정 브랜치의 부분 파일만 가져오고 싶을 땐 방법을 몰라서 그냥 깃 내역 조회 후 파일 복사해서 끌어다 썼는데 체리픽이라는 명령어를 알게 되어서 파일 관리를 한결 편하게 할 수 있을 것 같습니다.
(체리를 따다 명령어 이름도 이해하기 쉽게 잘 지은 것 같다)

참고한 글 https://meetup.toast.com/posts/45

0개의 댓글