Git의 다른 분기에서 커밋 복사

Abdul Jabbar 2022년8월23일
Git의 다른 분기에서 커밋 복사

Git에서 작업하는 동안 한 분기의 특정 개별 커밋을 현재 HEAD 분기로 통합하려는 시점이 옵니다. 클라이언트가 제품이나 보고된 버그의 일부 변경을 원하기 때문일 수 있습니다.

실수로 커밋했거나 이전 브랜치에서 더 이상 커밋을 원하지 않고 현재 HEAD 브랜치에서 수행하기를 원합니다.

위 문제의 정답은 CHERRY PICK 입니다. 따라서 다음 섹션에서는 cherry-pick 명령에 대해 자세히 설명합니다.

Git의 다른 분기에서 커밋 복사

한 브랜치에서 특정 커밋을 선택하여 현재 HEAD 브랜치에 복사하는 것을 체리 피킹(Cherry Picking)이라고 합니다.

Git에는 이를 위한 특정 명령, 즉 Git의 cherry-pick 명령이 있습니다. 체리 피킹의 다른 용도는 풀 리퀘스트를 병합하거나 개발하기 전에 특정 변경 사항을 적용하는 것입니다.

이것은 변경 사항을 실행 취소하는 데 매우 유용할 수 있습니다.

이 기사에서는 한 브랜치에서 다른 브랜치로 특정 커밋을 선택하는 방법에 대해 설명합니다.

git log 명령을 사용하여 커밋 보기

먼저 git log를 사용하여 선택하려는 커밋을 조사합니다. 다음은 git log 명령의 분기 결과입니다.

d23216 - 953222	- 953219 - aa3s36 - 532d37 [master]
           \
            76cada - 66ecb3	- b886a0 [feature]

여기 feature 분기에는 master 분기에만 필요한 다른 분기의 커밋 66ecb3이 있습니다.

특정 커밋을 선택하여 현재 브랜치인 master 브랜치로 전송해 보겠습니다. 그런 다음 해당 커밋 변경 사항을 프로젝트에 사용할 수 있습니다.

git cherry-pick 명령을 실행하여 커밋 복사

여기 git cherry-pick이 우리를 구해줄 것입니다. 66ecb3은 체리이며 과거에 수행된 많은 푸시 중에서 선택하고 싶습니다.

다음 명령을 실행하여 다른 분기에서 선택하겠습니다.

git checkout master
git cherry-pick 66ecb3

위에 나열된 명령이 성공적으로 실행되면 이제 66ecb3이 마스터 분기에서 새 커밋으로 작동합니다.

그래서 Git은 master 브랜치에서 동일한 커밋 메시지와 변경 사항으로 우리가 필요로 하는 커밋의 복사본을 만들었습니다. 결국 새 ID를 가진 새 커밋이 생성됩니다.

git reset 명령을 사용하여 다른 분기 정리

feature 분기로 전환하면 이전 위치에서 동일한 커밋을 볼 수 있습니다. Git이 그것을 옮기지 않고 다른 브랜치로 복사했기 때문이다.

원본을 그대로 두었습니다.

이제 정리 및 실행 취소를 위해 필요한 분기를 체크아웃한 후 git reset 명령을 사용합니다.

$ git checkout Test
Switched to branch 'Test'
$ git reset --hard HEAD~1
HEAD is now at 66ecb3 Change the title and delete the error page
작가: Abdul Jabbar
Abdul Jabbar avatar Abdul Jabbar avatar

Abdul is a software engineer with an architect background and a passion for full-stack web development with eight years of professional experience in analysis, design, development, implementation, performance tuning, and implementation of business applications.

LinkedIn

관련 문장 - Git Commit