본문 바로가기

Git

[#. Git] cherry-pick으로 다른 branch에서 원하는 commit 커밋만 가져오기

반응형

 

 

 

 

 

branch를 파서 힘들게 작업했는데

기획이 바뀌거나 하는 이유로 반영할 수 있는 커밋이 한두 개밖에 되지 않을 때가 있다

이럴 때 원하는 커밋 한두 개만 가져와서 dev branch에 반영해보자 

git에서 cherry-pick이라는 걸 사용할 수 있다

 

 

 

 

① branch가 두 개 있다고 가정하자

 

feature/signup
feature/signin

 

feature/signin branch에 있는 커밋 하나만 가져오려고 한다

 

 

 

② commit 커밋 id 가져오기

 

git checkout feature/signin
git log --abbrev-commit		
`````
commit 89c1234
`````
89c7823 형태 => 커밋 ID를 가져온다

 

@ git의 commit id는 SHA1 알고리즘으로 만들어진 해시값이다

중복 없는 임의의 문자열이다

중복이 없는 해시 값이기 때문에 1, 2, 3처럼 순서대로 id를 가지는 경우처럼 이전 번호, 다음 번호 등을 확인하는 과정 생략

=> 온라인은 물론이고, 오프라인에서도 커밋이 가능하다

 

 

 

③ cherry-pick으로 커밋 가져오기

 

git checkout feature/signup
git cherry-pick 89c1234
git push

 

 

 

이 과정을 완료하면

feature/signup branch에 내가 원하는 커밋 하나만 가져오게 된다

간단하다

 

위 방식은 하나의 커밋만 가져오는 거고

A 커밋~B 커밋처럼 범위 기준으로 커밋을 가져올 수도 있다

 

 

 

④ cherry-pick으로 A~B 커밋 가져오기

 

⑴ A 다음~B 포함 커밋 가져오기

 

git cherry-pick A..B
=> git cherry-pick 89c1234..78d3456

 

⑵ A 포함~B 포함 커밋 가져오기

 

git cherry-pick A^..B
=> git cherry-pick 89c1234^..78d3456

 

 

 

 

 

 

 

 

반응형