본문 바로가기
Develop/Git

[git] git cherry-pick

by 코딩의성지 2019. 9. 13.

지난 글에서 git stash를 이용해 작업하던 걸 임시저장해서 사용한 걸 보여줬다. 그리고 그 작업을 하면서 일부러 conflict를 발생시켰는데...

이렇게  conflict가 발생해있는 걸 볼 수 있다.

 

 

 

먼저 conflict가 발생한 이유에 대해서 말해봄..!  지난 글에서 보면 (https://devkingdom.tistory.com/2 ) solo-spring-mvc3 에서 브랜치를 따서 작업을 했었는데, 위의 사진을 보면 각 브랜치 사이에 마스터가 있다. 그런데 내가 이제 commit 치고 서버로 push 하고 이제 딱 master에다가 merge를 하려고하니깐 서버가 "이놈은 solo-spring-mvc3에서 브랜치를 따놓고 master에 merge 하려고 하네? " 라고 하면서 conflict를 발생시켜 버린다.

 

이렇게 발생한 conflict는 제거해줘야하는데... 나는 회사에서 초고수 과장님께 배운 기술을 알려주려고한다 !! 집중~~

 

이게 인터넷 찾아봐도 잘 없더라구 ... 아 계속 반말로 하는 이유는 어차피 아무도 안보고 나만 볼것같아서이다. 혹시나 보시는 분들은 이해 부탁드려요ㅠㅡㅜ

 

자 아무튼 내가 알려줄 기술은 바로바로 제목을 보면 알 듯이 cherry-pick 이라는 기술이다. 거창하게 말했지만 별거 없다. 쉽게 말하면 하나의 커밋을 따와서 붙이는 거다.

위의 그림처럼 하나의 커밋을 가져와서 붙이면 된다. 쉽지?

 

자 그럼 해보자 !  자 로컬에서 git log를 쳐보자 . 쭉 작업이나오는데 우리는

이  커밋을 붙여 넣어볼거다. b2fd~~~~ 로 되어있는게 commit 명인데 이걸 복사 해놓자 ! 그리고 했으면 master로 이동하자.

자 여기서 기존에 있었던 solo-spring-mvc4 브랜치를 삭제하고 새로 만들어주자 . 

이 짓을 왜 해주느냐 ? 위에 있는 그림처럼 solo-spring-mvc4는 원래 solo-spring-mvc3 이랑 이어져서 따진 브랜치인데 이걸 master에서 이어주려고 하는거다!  여기서 git log를 쳐보면 master와 같은 선상에 놓여진걸 볼 수 있다. 그러고 나서 git cherry-pick  b2fd~~~~ (아까복사해놓은 커밋)  를 쳐보자.

 

이렇게 하고나서 git log를 쳐보면 정상적으로 커밋이 올라와있는걸 확인할 수 있다.

그러고나서 서버에 강제로 푸시를 때려버리자. (강제로 날려서 기존에 conflict 난 푸시를 무시해버리자!!)

이렇게 하고 서버로가서 merge 해주면!!!!!

나이스~~~~~~~~~~~~~~~

 

말이 좀 어려울수도 있다. 그래도 한 10번 읽다보면 이해될거다. 그래도 이해안되면 댓글달아주라. 그럼 오늘도 즐거운 코딩하자

반응형

댓글