Skip to main content

[git cherry-pick] 깃, 특정 커밋들만 추출하기


하나의 브랜치에서 다른 브랜치로 몇개의 커밋만 가져가고 싶을 경우 git cherry-pick을 이용하면 된다.


사진과 같이 커밋이 되어있을때, 다른 브랜치에 a와 b 커밋만 가져가고 싶은 경우, 아래 순서대로 따라하면 된다. (기존브랜치에서 커밋이 제거되지 않음)

image



1. 브랜치 이동​

아래 명령어를 입력하여 커밋을 받을 브랜치로 이동한다.

git checkout 브랜치이름


2. 명령어 입력​

만약 하나만 옮길 경우

git cherry-pick 해시값

두개 이상의 커밋을 옮길 경우

git chrry-pick 해시값1 해시값2 해시값3

커밋과 커밋 사이 범위를 전부 이동할 경우 (첫 커밋은 포함되지 않으며, 마지막 커밋은 포함됨)

git cherry-pick 해시값1..해시값5


3. 충돌 해결​

만약 충돌이 발생한다면, git status로 상황을 살펴보면서 git add와 git rm을 이용하면서 충돌을 해결한다.

git status
git add 파일.ext
git rm 파일.ext

충돌을 해결했으면 아래 명령어를 입력하여 계속 진행한다.

git cherry-pick --continue

커밋 수정 창이 뜨게되면 수정해도 되며, 필요없다면 :q -> 엔터 를 누르고 빠져나오고, 모든 충돌을 해결할때까지 이 과정을 반복한다.



4. COMMITTER_DATE 수정​

참고 : 깃, COMMITTER_DATE 변경하기

git filter-branch --env-filter \
'if [ "$GIT_AUTHOR_DATE" != "$GIT_COMMITTER_DATE" ]
then
export GIT_COMMITTER_DATE="$GIT_AUTHOR_DATE"
fi'
git push origin +브랜치이름


참고자료