본문 바로가기

Git

Git cherry-pick

먼저 초기화를 해주고 두개의 branch을 만들겠습니다.

그리고 이 두개의 branch의 각각의 작업해주고 합칠겁니다.

이때 하나의 파일을 수정하게 되면 충돌과 같은 복잡한 이슈가 발생할 수 있기 때문에

버전을 만들때 마다 파일을 생성하겠습니다.

 

세미콜론을 써서 한번에 명령을 실행하겠습니다.

touch init.txt; git add init.txt; git commit -m "init"

 

 

 

그다음 branch을 만들어주겠습니다.

git branch topic

 

두개의 브렌치가 생성된 것을 확인하였습니다.

 

그리고 현재 있는 main 브렌치에서 새로운 파일을 만들고 add, commit 하겠습니다.

 

이번에도 똑같이 main 브렌치에서 새로운 파일을 만들고 add, commit 하겠습니다.

 

이번엔 브렌치를 옮겨 topic 브렌치에도 버전을 추가해주겠습니다.

git checkout topic

 

 

topic 브렌치에서 새로운 파일을 만들고 add, commit 하겠습니다.

 

 

 

이번에도 똑같이 topic 브렌치에서 새로운 파일을 만들고 add, commit 하겠습니다.

 

 

이번에도 똑같이 topic 브렌치에서 새로운 파일을 만들고 add, commit 하겠습니다.

 

 

이렇게 되면 각각의 버전마다 파일이 만들어졌고, cherry-pick을 사용할 준비가 되었습니다.

이제 현재 작업하고 있는 내용인 m2에 t2내용이 main 브렌치에도 적용이 되었으면 좋겠다고 가정하겠습니다.

그러면 t2 버전에서 만든 t2 파일만을 main에 가져오고 싶다는 상태겠죠?

 

 

그렇다면 master 브렌치의  m2 작업까지에 t2 파일만이 온다면 되는 것 이겠죠?

cherry-pick은 t2 버전이 생성될 때 생긴 변화만을 적용하겠다 라는 것이 cherry-pick 이겠습니다.

 

cherry-pick을 하기 위해서는 여러분이 가져올려고 하는 브렌치가 아니라 병합될 브렌치가 되야 하므로

main 브렌치가 되어야겠죠? 저는 현재 main 브렌치이고 아직 topic 브렌치 인 분이 계시다면 이동해주세요!

 

git cherry-pick [커밋ID]

 

 

완료가 되었고, 현재 디렉토리 목록을 보시게 되면 t2 가 감쪽같이 들어와있네요!?

 

또 타임라인을 보시게 되시면 새로운 버전이 만들어져있는 것을 볼 수 있습니다.

 

이렇게 cherry-pick 은 변화를 가져오는 것이고,

버전이 생성될때 변화를 합쳐서 버전을 만드는 것이다. 라고 생각하면 되겠습니다.

'Git' 카테고리의 다른 글

Git cherry-pick 충돌  (0) 2024.02.01
Git rebase  (0) 2024.01.31
Git cherry-pick & rebase  (0) 2024.01.31
Git CLI 협업3 (fetch)  (1) 2024.01.31
Git CLI 협업2  (0) 2024.01.31