Git

깃 체리픽 하는 방법

코딩질문자 2024. 5. 16. 19:56
728x90

https://chat.openai.com/share/3987fbaf-05fc-4124-83e6-28e9409941a3

 

ChatGPT

A conversational AI system that listens, learns, and challenges

chat.openai.com

 

  • 기본이 되는 브랜치 : main
  • 병합 목적 브랜치: dev
  • 내가 작업한 브랜치: coding-dev

 

main 이 운영계 dev가 개발계이고, 

이렇게 있을 때 main을 기준으로 coding -dev를 딴 다음 dev에 반영하고, 나중에 작업을 모아서 dev => main에 병합하는 방식으로 작업한다고 생각해 보자.

 

이럴 때 coding-dev에서 작업을 한 후, coding-dev => dev로 머지하려고 할 때 모종의 이유르 내가 작업한 커밋 이외의 커밋이 딸려 들어갈 때.. 내가 작업한 커밋만 dev에 머지하는 방법이 없을까? 이럴 때 유용한 방법이 깃체리픽이다.

 


 

방법을 글로 쓰면 간단하다.

우선 기본이 되는 브랜치로 이동한 다음, 체리픽용 브랜치를 따고 해당 브랜치에서 커밋할 해시를 기준으로 커밋을 가져오면 된다.

 

이걸 명령어와 함께 알아보자   

 

1. 기본이 되는 브랜치로 이동 

 

git checkout main

 

 

2. 체리픽용 브랜치 생성

 

git checkout -b cherry-pick-branch

 

 

3. 커밋할 해시를 알아보기 위해 명령어 입력

 

git log

 

예를 들어 커밋 목록들이 아래와 같다면

commit 69bf2018345bd095ad6e10bcd02972a1e60c4a52 (HEAD -> bugfix - 수정)
Author: 권아무개
Date:   Fri May 31 14:55:28 2024 +0900

    [fix] change the text msg

commit 76f4dcfdc91929754c479d78021c36d7f2778d7c (origin/base)
Merge: c62d061b 0ae62c19
Author: 김아무개
Date:   Fri May 31 04:01:02 2024 +0000

 

여기서 김 아무개의 커밋 목록만 넣고 싶다면 다음과 같이 써주면 된다.

 

4. 커밋할 해시를 기준으로 체리픽 한다. - 해시는 위에 로그 목록을 기준으로 commit이라는 단어옆이 있는 값이다.   

 

git cherry-pick 76f4dcfdc91929754c479d78021c36d7f2778d7c

 

만약, 더 있다면 더 추가해주면 된다. 간혹 충돌이 날 수 있다. 충돌이 나면 적절하게 충돌 처리를 해주도록 하자. 그러고 나서 commit 메시지를 남기고 나서

 

5. 목적 브랜치로 다시 푸시하면 내가 원하는 커밋만 PR 되는 것을 확인할 수 있다.

git push origin cherry-pick-branh:main

      

git push origin x:y 명령어에서 x는 로컬 브랜치를, y는 원격 브랜치를 나타냅니다.

따라서 x는 로컬 브랜치이고, y는 원격 브랜치입니다.

 

결과적으로 이렇게 하면 내가 원하는 커밋 목록이 목적 브랜치에 PR 되는 것을 확인할 수 있습니다.  

728x90