Git 다른 브랜치의 특정 commit만 내 브랜치에 반영하기

업데이트:

특정 브랜치의 특정 commit만 내 브랜치에 반영하기

문제 상황

브랜치 개수가 늘어나고 사이즈가 커지면서, 각기 다른 형상에 대해 다른 브랜치의 특정 커밋 내용만 반영해야하는 상황.

이럴땐 어떻게 해야할까?

  • PR을 통해 머지를 한다?? X

    -> 형상이 다르기 떄문에 형상 자체가 바뀐다

  • 특정 커밋로그를 찾아서 하나씩 코드를 복사한다?? X

    -> 노가다는 방법을 모르기전까진 유효하다.


cherry-pick

바로 cherry-pick git 명령어를 사용하면 된다.

cherry-pick


우선 git logs나 github 리파지터리를 가서 반영할 커밋해시값을 찾는다.

그 뒤, 아래와 같이 반영할 커밋해시값과 함께 명령어를 입력한다.

git cherry-pick 293br39


만약 2개 이상의 커밋을 다 반영하고싶다면..

git cherry-pick 293br39 2359rt2


혹은 연속적인 경우..

git cherry-pick 293br39..t94j0g3


여기서 충돌이 발생할 수도 있다.

그러면 우선 충돌난 파일을 수정한 후 다음 명령어를 사용하면 다시 진행이 시작 된다.

git add [충돌파일경로]
git cherry-pick –continue 


만약 cherry-pick을 중단하고싶으면 다음과 같이 abort명령어를 입력한다.

git cherry-pick –abort


그리고 내 IDE의 소스코드를 보면 커밋이 반영되어있는 것을 확인할 수 있다.

이제 수정을 하던, 그대로 가던 커밋로그가 반영된 소스코드를 리모트 저장소에 푸시해준다.

태그:

카테고리:

업데이트:

댓글남기기