SW/Git

git : cherry-pick 개념, 사용법

얇은생각 2019. 10. 12. 07:30
반응형
git cherry-pick은 임의의 Git 커밋을 참조로 선택하고 현재 작동하는 HEAD에 추가 할 수 있는 강력한 명령입니다. cherry pick은 지점에서 커밋을 선택하여 다른 커밋에 적용하는 행위입니다. git cherry-pick은 변경 사항을 취소하는 데 유용할 수 있습니다. 예를 들어, 실수로 잘못된 분기에 커밋이 있다고 가정하십시오. 올바른 브랜치로 전환하고 커밋이 속한 곳으로 커밋을 선택할 수 있습니다.



git cherry pick을 사용하는 경우
git cherry-pick은 유용한 도구이지만 항상 모범 사례는 아닙니다. cherry pick은 중복 커밋과 체리 피킹이 작동하는 많은 시나리오를 유발할 수 있으며 대신 전통적인 병합이 선호됩니다. git cherry-pick은 몇 가지 시나리오에 유용한 도구입니다.



팀 협업
종종 팀은 동일한 코드로 작업하는 개별 구성원을 찾을 수 있습니다. 새로운 제품 기능에 백엔드 및 프런트 엔드 구성 요소가 있을 수 있습니다. 두 제품 부문간에 공유 코드가있을 수 있습니다. 백엔드 개발자는 프런트 엔드도 활용해야하는 데이터 구조를 만들 수 있습니다. 프론트 엔드 개발자는 git cherry-pick을 사용하여 이 가상 데이터 구조가 작성된 커밋을 선택할 수 있습니다. 이 선택을 통해 프론트 엔드 개발자는 프로젝트 측면에서 진행을 계속할 수 있습니다.



버그 핫픽스
버그가 발견되면 최종 사용자에게 가능한 빨리 수정 프로그램을 제공하는 것이 중요합니다. 예제 시나리오의 경우 개발자가 새로운 기능에 대한 작업을 시작했다고 가정 해보십시오. 새로운 기능을 개발하는 동안 기존 버그를 식별합니다. 개발자는 이 버그를 패치하는 명시적 커밋을 만듭니다. 이 새로운 패치 커밋은 더 많은 사용자에게 영향을 미치기 전에 버그를 수정하기 위해 마스터 브랜치로 직접 선택 될 수 있습니다.



변경 사항 취소 및 손실 된 커밋 복원
때로는 기능 분기가 오래되어 마스터로 병합되지 않을 수 있습니다. 때때로 풀 요청이 병합되지 않고 닫힐 수 있습니다. Git은 커밋을 잃지 않으며 git log 및 git reflog와 같은 명령을 통해 체리를 찾아서 다시 삶으로 돌아 왔습니다.




git cherry pick 사용법
git cherry-pick을 사용하는 방법을 보여주기 위해 다음과 같은 분기 상태의 저장소가 있다고 가정해 봅s니다.

    a-b-c-d Master
       \
           e-f-g Feature

git cherry-pick 사용법은 간단하며 다음과 같이 실행될 수 있습니다.

git cherry-pick commitSha

이 예에서 commitSha는 커밋 참조입니다. git log를 사용하여 커밋 참조를 찾을 수 있습니다. 이 예제에서, master에서 commit `f`를 사용하고 싶다고 구성했습니다. 먼저 마스터 브랜치에서 작업하고 있는지 확인해야 합니다.

git checout master

다음 명령으로 cherry-pick을 실행합니다.

git cherry-pick

Git 히스토리가 실행되면 다음과 같습니다.

    a-b-c-d-f Master
       \
           e-f-g Feature

f 커밋이 기능 분기로 성공적으로 선택되었습니다.



git cherry pick의 예
 git cherry pick에는 일부 실행 옵션이 전달할 수 있습니다.

-edit
-edit 옵션을 전달하면 체리 선택 작업을 적용하기 전에 커밋 메시지를 묻는 메시지가 표시됩니다.

-커밋 없음
--no-commit 옵션은 cherry pick을 실행하지만 새 커밋을 수행하는 대신 대상 커밋의 내용을 현재 분기의 작업 디렉토리로 이동합니다.

-사인 오프
--signoff 옵션은 Cherry-pick 커밋 메시지의 끝에 'signoff'서명 줄을 추가합니다.

이 유용한 옵션 외에도 git cherry-pick은 다양한 병합 전략 옵션을 허용합니다. git merge strategies 문서에서 이러한 옵션에 대해 자세히 알아보십시오.

또한, git cherry-pick은 병합 충돌 해결을 위한 옵션 입력도 허용합니다. --abort, --continue, --quit 옵션은 git merge 및 git rebase와 관련하여 더 자세하게 다룹니다.



요약
cherry pick은 강력하고 편리한 명령으로 몇 가지 시나리오에서 매우 유용합니다. git merge 또는 git rebase 대신 cherry picking을 오용해서는 안됩니다. git log 명령은 cherry pick에 대한 커밋을 찾는 데 도움이됩니다.


반응형