without haste but without rest

git cherry pick 본문

Git

git cherry pick

JinungKim 2022. 4. 23. 15:48

https://backlog.com/git-tutorial/kr/stepup/stepup7_4.html

 

누구나 쉽게 이해할 수 있는 Git 입문~버전 관리를 완벽하게 이용해보자~ | Backlog

누구나 쉽게 알 수 있는 Git에 입문하신 것을 환영합니다. Git을 사용해 버전 관리를 할 수 있도록 함께 공부해봅시다!

backlog.com

 

평일 중에 정리했어야 하는데.. 까먹고 있다가 글 퀄리티가 낮아지는 대참사 발생

 

Goal

- cherry pick은 무엇인가?

- 어떤 상황에서 사용할 수 있는가?

- 어떻게 사용하는가?

 

1. cherry pick은 무엇인가?

cherry pick은 브랜치에 커밋한 이력 중에서 원하는 커밋만 골라서 붙이는 기능이다. 쉽게 커밋을 따서 붙일 수 있어서 cherry pick이란 이름을 붙인 것으로 알고있다.

 

2. 어떤 상황에서 사용할 수 있는가?

깃헙에서 협업을 하다 보면 하나의 브랜치에 여러 커밋이 쌓이게 된다. 예를들어 A가 dev branch에 foo를 추가했다. B는 dev 브랜치에 bar를 추가했다. 그런데 B는 테스트를 완료해서 해당 커밋을 QA Stage로 이동시키고자 한다. 그래서 dev branch를 QA branch에 PR 한다.

이때 PR에는 자동으로 A, B가 각각 커밋한 foo, bar가 모두 커밋 이력으로 잡히게 된다. (dev 브랜치를 qa로 머지하는 상황이고 이전 커밋 내역은 모두 QA branch에 반영 되어있다고 가정한다.) 여기서 문제가 생겼다. B는 자신이 작업한 내역만 QA로 merge하고 싶은데, A가 커밋한 foo도 자동으로 PR 시 잡히게 된다.

 

3. 어떻게 사용하는가?

2번 상황에서 merge할 커밋은 B가 dev branch에서 작업한 bar만 가져와야 한다. cherry pick을 하고자 하는 경우

(1). QA 브랜치에서 cherry pick에 사용할 branch를 하나 분기한다. 여기서는 dev-b 라고 가정한다.

(2). git cherry-pick 명령어로 원하는 커밋 이력 dev-b branch에 추가한다. 

(3). dev-b branch를 QA branch에 merge 한다.

 

위 순서로 진행하는 경우 QA에서 브랜치를 분기할 경우 QA의 상황과 동일한 브랜치를 하나 생성한다. cherry pick으로 B가 작업한 내역만 가져오므로 dev-b branch는 QA + B의 작업 내역만 붙어있는 branch가 완성된다. 따라서 dev-b branch를 QA branch로 merge 하는 경우 B의 작업 내역만 merge할 수 있다. 

이후에 A가 작업 내역을 확인하고, dev branch를 QA branch로 merge하는 경우 이미 dev-b에서 b의 작업 내용은 반영이 되어 있으므로 별도의 작업 없이도 merge를 진행할 수 있게 된다.

 


p.s 시간이 될 때 리뷰할 겸 이미지 포함하여 글 다시 작성하기

'Git' 카테고리의 다른 글

Github Actions  (0) 2022.03.03
Github ssh key setup  (0) 2022.03.01
gitignore 캐시 파일 제거  (0) 2021.09.18
git 브랜치 학습  (0) 2020.12.27
깃허브 초보를 위한 튜토리얼  (0) 2020.03.05
Comments