[GIT] Cherry-Pick (특정 커밋 가져오기)

MJ·2022년 8월 16일
0

GIT

목록 보기
27/33
post-thumbnail

커밋을 잘라서 붙이기

GIT으로 버전관리를 하다보면 커밋을 다른 브랜치에 잘못 저장하거나 더이상 필요없는
커밋이 생기거나 또는 코드의 의존성 때문에 다른 개발자의 커밋 중 일부를 가져와야 하는
상황이 생길수도 있습니다.

이런 경우에서 사용되는 명령어인 cherry-pick에 대해서 알아보겠습니다.


🍒 Cherry-Pick

  • 모든 커밋중에 일부의 커밋만 가져오고 싶을 때 사용하는 명령어
  • 커밋을 가져올 때, 그 커밋에서 생긴 변화만을 가져 옵니다.
    커밋의 버전에 저장된 모든 내용을 가지고 오는 것이 아닙니다.
git cherry-pick [가지고올 커밋ID]
# 커밋버전을 현재 branch에 병합 합니다.

git cherry-pick 1515ad 2415fd
# 두 개의 커밋버전을 현재 branch에 병합 합니다.
# 두 개 이상도 가능하다.

cherry_pick 충돌 해결?

commit을 가지고 올 때, commit의 내용과 현재 브랜치의 내용이 동일할 수 있습니다.
이런 상황에서 충돌(confilct)이 발생하게 됩니다. 

✔️ 충돌 문제를 해결하기 위해서 3 way merge 방법을 사용하는데, 이 방법에서 조상이 되는 
   base commit은 가져올 commit의 전 버전이 base commit 됩니다.



Cherry_Pick 사용 하기

1. 새로운 저장소 생성 및 버전 생성


2. 브랜치 생성


3. main 브랜치에서 여러개의 버전 생성


4. topic 브랜치에서 여러개의 버전 생성


5. topic 브랜치에서 생성한 t2 버전을 main 브랜치의 m2 버전에 병합 하려고 함


6. main 브랜치에서 topic의 일부 커밋을 병합


Cherry_Pick 충돌 해결

이전에 실습했던 내용을 초기화 하고, 새로 커밋을 합니다.


1. main branch 저장소 초기화 및 파일 생성


2. topic branch 생성 후, main branch에서 2개 버전 생성


3. topic branch에서 3개의 버전 생성


4. main branch에서 topic branchcommit t3버전을 cherry-pick 진행
4.1 cherry-pick 하는 과정에서, 충돌이 발생해 3 way merge으로 해결해야 합니다.
4.2 3 way merge을 하는 과정에서 base commit이 되는 커밋은 가져오려고 하는 커밋의
이전 버전이 됩니다.

즉, commit t3버전의 이전 버전인 commit t2base commit으로 비교하게 됩니다


5. mergetool을 사용해서 충돌 해결


6. 충돌 해결 후에 결과 확인

profile
프론트엔드 개발자가 되기 위한 학습 과정을 정리하는 블로그

0개의 댓글