본문 바로가기
Programming/Git

Git Cherry-Pick으로 특정 커밋 가져오기

by JH-M 2023. 5. 10.

Git Cherry-Pick이란?

Git의 Cherry-Pick 기능은 특정 커밋을 선택하여 현재 브랜치에 적용할 수 있게 해주는 매우 유용한 도구입니다. 작업을 진행하다 보면, 다른 브랜치에서 원하는 변경 사항만을 현재 브랜치에 가져와 적용하고 싶을 때가 있습니다. 이런 경우에 git cherry-pick 명령어를 사용하면, 특정 커밋만 선택적으로 적용할 수 있습니다.

이 기능은 브랜치 간 복잡한 병합 과정을 피하고 필요한 변경 사항만 가져와서 빠르게 작업을 진행할 수 있도록 도와줍니다. 사용자는 간단한 명령어를 통해 원하는 커밋을 손쉽게 현재 작업 중인 브랜치로 가져올 수 있습니다. 이를 활용하여 Git 작업을 보다 효율적이고 편리하게 진행할 수 있습니다.

Git Cherry-Pick 사용법

  • Cherry-Pick으로 커밋 가져오기: git cherry-pick [커밋 해시]
  • Cherry-Pick 충돌 해결하기: git cherry-pick --continue
  • Cherry-Pick 취소하기: git cherry-pick --abort

Git Cherry-Pick 예제

이 예제에서는 Git 프로젝트 생성부터 Cherry-Pick을 사용하는 방법에 대해 공부해 보겠습니다.

가능하면 충돌하는 상황을 피하기위해서 하나의 파일이 아닌 여러개의 파일을 생성하면서 예제를 진행하였습니다.

우선 테스트를 위한 폴더와 git을 초기화 합니다.

mkdir test
cd test
git init

mainmain.txt 파일을 추가하고 커밋합니다.

echo "main" > main.txt
git add main.txt
git commit -m "main"

side 브랜치로 이동합니다.

git checkout -b side

1.txt, 2.txt, 3.txt, 4.txt 파일을 각각 추가하고 커밋합니다.

echo "1" > 1.txt
git add 1.txt
git commit -m "1"

echo "2" > 2.txt
git add 2.txt
git commit -m "2"

echo "3" > 3.txt
git add 3.txt
git commit -m "3"

echo "4" > 4.txt
git add 4.txt
git commit -m "4"

main 브랜치로 돌아옵니다.

git checkout main

로그를 확인해서 해시키 값을 확인 합니다.

git log --all --oneline

--all 다른 브랜치까지 모두 포함합니다.
--oneline 로그를 한줄로 출력해줍니다.

36eed33 (side) 4
3b39c81 3
a317e08 2
d239958 1
b971663 (HEAD -> main) main

3 커밋을 cherry-pick 으로 가져옵니다.

git cherry-pick 3b39c81

3.txt 파일이 불러와진 것을 확인합니다.

만약 merge 라면 앞의 1.txt, 2.txt 까지 모두 불려왔을 것입니다.

만약, 커밋 1 ~ 4 범위 모두 가져오려면 커밋 1의 해시키와 4의 해시키를 다음과 같이 같이 입력해주면 됩니다.

git cherry-pick d239958 36eed33

이 예제는 충돌하는 상황이 없다는 가정하에 만들어진 예제입니다. 실제 프로젝트에서는 충돌할 가능성이 높으므로 이것을 감안해서 잘 사용하시길 바랍니다.

댓글