Git Cherry-Pick과 병합 작업 흐름

John Wachira 2023년6월20일
  1. git cherry-pick 명령
  2. git merge 명령
  3. git cherry-pickgit merge의 차이점
Git Cherry-Pick과 병합 작업 흐름

이 문서에서는 git cherry-pickgit merge 명령의 워크플로우에 대해 설명합니다. 두 명령을 모두 사용하여 Git 버전 제어 시스템의 한 분기에서 다른 분기로 변경 사항을 통합합니다.

그러나 특정 시나리오에서는 한 명령을 다른 명령보다 사용하는 것이 좋습니다.

git cherry-pick 명령

git cherry-pick 명령은 참조로 임의의 Git 커밋을 선택하고 현재 HEAD에 적용할 수 있는 유용한 Git 유틸리티입니다. 이 명령을 사용하여 한 분기에서 커밋을 선택하고 다른 분기에 적용합니다.

언제 git cherry-pick 명령을 사용해야 합니까?

유용하긴 하지만 git cherry-pick 명령이 항상 모범 사례는 아닙니다. 일부 시나리오에서는 전통적인 git merge 명령이 선호됩니다.

그럼에도 불구하고 이상적인 명령을 찾을 수 있는 특정 시나리오가 있습니다. 몇 가지를 논의해 봅시다.

여러 분기가 있는 프로젝트에서 작업한다고 가정해 보겠습니다. 한 브랜치에서 변경하고 나중에 잘못된 브랜치에서 체크아웃되었음을 발견합니다.

이러한 변경 사항은 이 분기에 속하지 않으므로 git cherry-pick 명령을 사용하여 변경 사항을 올바른 분기로 이동할 수 있습니다.

커밋 해시를 기록하고 git checkout 명령을 사용하여 올바른 분기로 전환한 다음 아래 그림과 같이 cherry-pick을 실행합니다.

$ git cherry-pick <commit-id>

git cherry-pick 명령은 팀 협업에도 이상적입니다. 프로젝트에는 프런트엔드와 백엔드 구성 요소 간에 공유 코드가 있습니다.

한 개발자는 git cherry-pick 명령을 사용하여 다른 개발자의 코드를 복사할 수 있습니다.

또한 버그 핫픽스를 위해 git cherry-pick 명령을 사용합니다. 프로젝트의 새로운 기능에 대한 작업을 시작했으며 프로세스에서 기존 버그를 식별했다고 가정해 보겠습니다.

버그를 명시적으로 수정하는 커밋을 생성하고 main 브랜치로 cherry-pick할 수 있습니다. 이 명령은 손실된 커밋을 복원하는 데에도 이상적입니다.

git merge 명령

git merge 명령에 대해서는 할 말이 많지 않습니다. 단순히 두 분기의 커밋 히스토리를 연결하고 병합 커밋을 생성합니다.

두 가지를 병합하면 development 분기에서 main 분기로 변경 사항을 가져올 수 있습니다. git rebase 명령 대신 한 분기에서 다른 분기로 변경 사항을 통합하는 비파괴적인 방법입니다.

병합은 매우 간단합니다. 병합하려는 분기로 전환하고 명령을 실행하기만 하면 됩니다. 다음은 예입니다.

main 분기와 관련된 development 분기에 일부 커밋이 있다고 가정하면 다음과 같이 이러한 변경 사항을 main 분기에 통합할 수 있습니다.

# Switch to the main branch
$ git checkout main
# Merge the two
$ git merge development

git cherry-pickgit merge의 차이점

본 바와 같이 두 명령 모두 한 분기에서 다른 분기로 변경 사항을 통합할 때 유용합니다. 그러나 차이점은 각 명령을 사용하는 방법에 있습니다.

git cherry-pick 명령은 대규모 Git 리포지토리의 작은 하위 집합을 샘플링하는 데 이상적입니다. 분기 간에 특정 커밋을 이동하려는 경우 유용합니다.

반면 git merge 명령은 많은 양의 커밋에 이상적입니다. 한 브랜치에서 다른 브랜치로 커밋 20개를 체리픽하는 것은 이상적이지 않습니다.

git merge 명령은 이러한 시나리오에 더 적합합니다.

즉, 각 명령에는 장점과 단점이 있습니다. 몇 가지를 논의해 봅시다.

git cherry-pick 명령은 항상 관련 없는 병합 커밋을 도입하는 git merge 명령과 달리 리포지토리의 혼란을 줄입니다.

반대로 git cherry-pick 명령을 사용하면 특히 공유 Git 리포지토리가 있는 경우 커밋이 중복되고 다른 개발자를 혼란스럽게 할 수 있습니다.

git merge 명령은 특히 많은 커밋을 처리할 때 변경 사항을 더 빠르게 통합하는 데 도움이 됩니다. 이 커밋의 단점은 병합 충돌이 발생할 가능성입니다.

물론 git cherry-pick 명령을 사용하면 병합 충돌이 발생할 수 있지만 git merge 명령을 사용하면 커밋이 많을수록 더 많은 충돌이 발생할 가능성이 있습니다.

git mergegit cherry-pick 명령은 Git의 한 분기에서 다른 분기로 변경 사항을 통합할 때 유용합니다. 차이점은 각 명령을 사용하는 시기와 방법입니다.

작가: John Wachira
John Wachira avatar John Wachira avatar

John is a Git and PowerShell geek. He uses his expertise in the version control system to help businesses manage their source code. According to him, Shell scripting is the number one choice for automating the management of systems.

LinkedIn

관련 문장 - Git Cherry-Pick

관련 문장 - Git Merge