[Git] Cherry-pick 변경사항 다른 브랜치에 반영하기 / 충돌(Conflict) 해결

2022. 9. 24. 00:58·Programming/Git
728x90

 

이전에는 사용한 적 없는데, 회사에서 소스관리하면서 가장 많이 사용하는 명령어 cherry-pick❗

사수님이 '체리픽' 알아두라고 했을 땐

체리..?🍒잘못들었나보다 그게 뭐람 했었는데 ㅋㄷㅋㄷ 잘 쓰는 중입니다 😉

 

 

1. Cherry-pick

다른 브랜치의 commit을 특정 브랜치에 적용할 때 사용하는 명령어

git cherry-pick <commit_id>

 

프로젝트에서 개발 브랜치에 commit하고 해당 기능이 잘 동작하는지 확인한 후에는 운영 브랜치에도 반영을 해야 하는데,
이 상황에서 다른 commit들로 인해 브랜치를 통째로 merge하지 못하거나 하는 등의 상황이 있죠


그럴 때 하나의 commit 만을 다른 브랜치로 반영할 수 있는 명령어 ! 🍒

 

 

 

2. cherry-pick 사용법

 

2.1. 변경사항 commit

git add .
git commit -m "'commit-1' into master"
git push

 

 

 


2.2. cherry-pick 대상 브랜치로 checkout 

 

2.2.1 commit id 복사

commit id를 사용하여 cherry-pick 할 예정이기 때문에 checkout 전 미리 복사해두기!

git log 명령어로 commit 번호 확인 후 복사

git log

git log

 

2.2.2 checkout

commit을 체리픽할 대상 브랜치로 checkout

git checkout <after_branch>

git checkout

 

 

 


2.3. cherry-pick 

 

2.3.1 cherry-pick

cherry-pick 하면서 메세지를 수정하기 위해 -e option을 사용했습니다

git cherry-pick -e 4f1f513a88420ed18f2e041ff61ec7f5ec0828b3

 

2.3.2 message 수정

-e 옵션을 사용하면 편집기가 열리면서 commit message를 수정할 수 있습니다

 

2.3.3 cherry-pick 완료 🌟

편집기에서 메세지 수정을 완료하면 cherry-pick 완료!

push 하여 원격 저장소에도 내용을 반영합니다

git push

 

 

 


3. cherry-pick 중 Conflict 해결

cherry-pick의 source 브랜치와 target 브랜치가 수정 위치가 겹친다면,

다음 사진처럼 Confilct가 발생할 수 있습니다

cherry-pick 을 취소하거나 충돌을 해결할 수 있습니다

 

3.1 cherry-pick 중단하기

다음 명령어로 cherry-pick을 중단할 수 있습니다

git cherry-pick --abort

다음 사진처럼 (prd|CHERRY-PICKING) 이던 상태가 종료되었습니다

cherry-pick --abort

 

 

3.2 Conflict 해결하기

다음 사진처럼 CHERRY-PICKING 상태에서 충돌 해결한 파일을 열어 충돌 소스를 확인/수정합니다

(충돌을 해결할 때에는 기존 소스를 실수로 변경시킬 수 있기 때문에 조심히!)

Confilct가 발생한 파일을 친절하게 알려주었네요

 

3.2.1 Confilct 발생 소스 수정

다음처럼 소스를 열어 <<<<<<< HEAD(현재 브랜치 소스) 와 >>>>>>> d0189c4 ('commit-2' into master) (cherry-pick 한 소스) 소스를 수정합니다

 

master에서 수정한 내용을 반영하기 위해 다음 사진처럼 수정한 후 저장했습니다

 

 

3.2.2 cherry-pick 계속하기

다음 명령어로 수정사항을 add하고  cherry-pick을 이어 진행시킵니다

원격 저장소에 push 하면 반영 완료 🌟

git add .
git cherry-pick --continue
git push

 

 

 

 

 

728x90
저작자표시 비영리 (새창열림)

'Programming > Git' 카테고리의 다른 글

[Git] 원격 저장소까지 반영된 commit 되돌리기(Git Reset)  (0) 2022.09.25
[Github] Issue 및 Issue Branch 생성하여 프로젝트 관리하기  (0) 2022.09.24
[Git] 윈도우에 Git 설치 및 사용자 이름/이메일 등록  (0) 2022.09.18
[Github] IntelliJ에서 Github 사용하기 (인텔리제이에서 깃허브 사용하기)  (0) 2021.10.03
[Github] README란? README.md 작성법  (5) 2021.10.01
'Programming/Git' 카테고리의 다른 글
  • [Git] 원격 저장소까지 반영된 commit 되돌리기(Git Reset)
  • [Github] Issue 및 Issue Branch 생성하여 프로젝트 관리하기
  • [Git] 윈도우에 Git 설치 및 사용자 이름/이메일 등록
  • [Github] IntelliJ에서 Github 사용하기 (인텔리제이에서 깃허브 사용하기)
s_ih_yun
s_ih_yun
  • s_ih_yun
    CODESYUN
    s_ih_yun
  • 전체
    오늘
    어제
    • 분류 전체보기 (326)
      • Computer Science (26)
        • Concept (3)
        • Algorithm (23)
      • Web (54)
        • Web (7)
        • Spring (14)
        • MyBatis (1)
        • AWS (7)
        • HTML & CSS (14)
        • JavaScript (11)
      • Programming (37)
        • C++ (3)
        • Java (6)
        • Python (10)
        • MySQL (1)
        • Oracle (2)
        • Git (15)
        • Dev Tools (0)
      • Infra˙ DevOps (1)
      • Baekjoon (104)
        • 단계별로 풀어보기 (78)
      • CodeUp (98)
        • Python 기초 100제 (98)
      • Programmers (2)
      • Books (3)
      • etc (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

    • Syun's Pages
  • 인기 글

  • 태그

    db
    clean code
    알고리즘
    spring
    java
    Programmers
    자료구조
    codeup
    CSS
    github
    BOJ
    aws
    git
    C
    단계별로 풀어보기
    Python
    CodeUp 기초 100제
    VS Code
    Tistory
    oracle
    SourceTree
    web
    MySQL
    JavaScript
    myBatis
    HTML
    웹
    c++
    Cloud
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
s_ih_yun
[Git] Cherry-pick 변경사항 다른 브랜치에 반영하기 / 충돌(Conflict) 해결
상단으로

티스토리툴바