HOWTO · Git
Git의 다른 분기에서 변경 사항을 선택적으로 병합
Git에서 특정 커밋을 병합할 수 있습니다.
이 페이지의 내용
이 문서에서는 특정 변경 사항을 한 분기에서 다른 분기로 병합하는 방법에 대해 설명합니다. 아시다시피 Git은 브랜치를 병합할 때 예외 없이 모든 파일을 병합합니다.
브랜치에 일부 커밋이 있고 몇 가지를 선택하여 다른 브랜치에 병합해야 하는 시나리오에 처할 수 있습니다. 이 문제를 어떻게 해결할 수 있는지 봅시다.
Git의 다른 분기에서 변경 사항을 선택적으로 병합
더 나은 이해를 위해 한 분기에서 다른 분기로 일부 커밋을 병합해야 하는 시나리오를 시뮬레이션합니다. 다음은 우리가 둘러볼 방법입니다.
예:
로컬 저장소 Delftscopetech에는 다음과 같은 두 개의 분기가 있습니다.
Dev_Branch메인
최대한 실용적으로 만들기 위해 프로젝트에서 수정이 필요한 몇 가지 버그를 발견했다고 가정합니다. 버그를 수정한 후 Main 분기 대신 Dev_Branch 분기에서 체크아웃되었음을 깨달았습니다.
정상적인 병합은 우리 프로젝트를 망칠 것입니다. 우리는 무엇을해야합니까?
이러한 시나리오에서는 먼저 git log 명령을 실행하여 Dev_Branch에 커밋 기록을 표시합니다. 필요한 변경 사항이 포함된 분기에 있는지 확인하십시오.
$ git checkout Dev_Branch
커밋 내역은 다음과 같습니다.
$ git log --oneline
그런 다음 Main 브랜치에 병합하려는 커밋을 식별합니다. 다음은 Main 브랜치의 커밋 기록입니다.
$ git checkout Main
$ git log --oneline
Main 분기에 다음 커밋이 없음을 알 수 있습니다.
edcb8ae두 번째 버그 수정cefb7bb첫 번째 버그 수정
두 커밋을 병합하려면 git cherry-pick 명령을 사용하고 두 커밋의 커밋 ID를 입력합니다. 병합하려는 분기(여기서는 Main 분기)에서 체크아웃했는지 확인하십시오.
$ git checkout Main
이제 아래와 같이 cherry-pick을 실행할 수 있습니다.
$ git cherry-pick edcb8ae cefb7bb
출력:
병합 충돌이 없는 경우 위의 출력과 유사한 결과가 표시됩니다. 병합을 확인합시다.
$ git log --oneline
출력은 Git이 커밋 ID는 다르지만 설명은 동일한 두 개의 새로운 커밋을 생성했음을 보여줍니다. 이제 아래와 같이 git push 명령을 실행하여 분기를 원격 저장소로 푸시할 수 있습니다.
$ git push origin Main
요약하면 git cherry-pick 명령 덕분에 Git에서 선택적으로 병합할 수 있습니다. 필요한 것은 병합하려는 변경 사항의 커밋 ID와 올바른 분기에서 체크아웃했는지 확인하는 것뿐입니다.