Git의 다른 분기에서 변경 사항을 선택적으로 병합

John Wachira 2024년2월15일
Git의 다른 분기에서 변경 사항을 선택적으로 병합

이 문서에서는 특정 변경 사항을 한 분기에서 다른 분기로 병합하는 방법에 대해 설명합니다. 아시다시피 Git은 브랜치를 병합할 때 예외 없이 모든 파일을 병합합니다.

브랜치에 일부 커밋이 있고 몇 가지를 선택하여 다른 브랜치에 병합해야 하는 시나리오에 처할 수 있습니다. 이 문제를 어떻게 해결할 수 있는지 봅시다.

Git의 다른 분기에서 변경 사항을 선택적으로 병합

더 나은 이해를 위해 한 분기에서 다른 분기로 일부 커밋을 병합해야 하는 시나리오를 시뮬레이션합니다. 다음은 우리가 둘러볼 방법입니다.

예:

로컬 저장소 Delftscopetech에는 다음과 같은 두 개의 분기가 있습니다.

  1. Dev_Branch
  2. 메인

최대한 실용적으로 만들기 위해 프로젝트에서 수정이 필요한 몇 가지 버그를 발견했다고 가정합니다. 버그를 수정한 후 Main 분기 대신 Dev_Branch 분기에서 체크아웃되었음을 깨달았습니다.

정상적인 병합은 우리 프로젝트를 망칠 것입니다. 우리는 무엇을해야합니까?

이러한 시나리오에서는 먼저 git log 명령을 실행하여 Dev_Branch에 커밋 기록을 표시합니다. 필요한 변경 사항이 포함된 분기에 있는지 확인하십시오.

$ git checkout Dev_Branch

커밋 내역은 다음과 같습니다.

$ git log --oneline

Dev_Branch의 커밋 내역

그런 다음 Main 브랜치에 병합하려는 커밋을 식별합니다. 다음은 Main 브랜치의 커밋 기록입니다.

$ git checkout Main
$ git log --oneline

메인 브랜치의 커밋 내역

Main 분기에 다음 커밋이 없음을 알 수 있습니다.

  1. edcb8ae 두 번째 버그 수정
  2. cefb7bb 첫 번째 버그 수정

두 커밋을 병합하려면 git cherry-pick 명령을 사용하고 두 커밋의 커밋 ID를 입력합니다. 병합하려는 분기(여기서는 Main 분기)에서 체크아웃했는지 확인하십시오.

$ git checkout Main

이제 아래와 같이 cherry-pick을 실행할 수 있습니다.

$ git cherry-pick edcb8ae cefb7bb

출력:

Git 선택적 병합 출력

병합 충돌이 없는 경우 위의 출력과 유사한 결과가 표시됩니다. 병합을 확인합시다.

$ git log --oneline

병합 확인

출력은 Git이 커밋 ID는 다르지만 설명은 동일한 두 개의 새로운 커밋을 생성했음을 보여줍니다. 이제 아래와 같이 git push 명령을 실행하여 분기를 원격 저장소로 푸시할 수 있습니다.

$ git push origin Main

요약하면 git cherry-pick 명령 덕분에 Git에서 선택적으로 병합할 수 있습니다. 필요한 것은 병합하려는 변경 사항의 커밋 ID와 올바른 분기에서 체크아웃했는지 확인하는 것뿐입니다.

작가: 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 Commit

관련 문장 - Git Merge