자바생
article thumbnail
Published 2022. 6. 20. 18:25
cherry-pick Git
728x90

pr를 올리면서 commit log를 보니 이전 commit 과 중복되어 pr이 올라가있는 것을 겪었다

그래서 깔끔한 commit log를 만들고자 아래와 같은 실습을 해보았다

 

왜 중복이 됐을까?

  • 화살표에서 나의 repo에 그대로 merge 했기 때문에 commit이 이전 commit과 쌓여서 중복이 된 것 같다

 

나의 repo master branch commit log

그래서 pr 올리는 레포의 pr을 날릴 때 , commit log를 보니

중복된 부분(a7670fb 시작) 이 쌓여서 pr이 날려진 것을 알 수 있다

 

그렇다면 실제로 반영되어야할 부분은 cc999fd, 9e23825, f9480f1인데 이를 어떻게 하면 좋을까?

 

결론을 먼저 말하자면 cherry-pick을 이용하여 해결할 수 있다

 

Do cherry-pick

 

백업 브랜치 생성

  • 이전 PR에서 올린 커밋들을 보관해야하니 백업 브랜치를 하나 생성한다

 

여기서 왜 backup branch를 생성해야할까?

  • 나는 tig —all를 통해 이전 commit id를 알 수 있는데 굳이 왜 backup branch를 생성해야하는지 궁금했다
  • 이 질문에 답은 스터디 선생님인 재상님이 말씀해주셨다

“아마 remote에 있던 commit 정보로 뜰 수도 있긴 합니다. 어떤 방법으로든 commit id를 쉽게 알아낼 방법 & 해당 commit들이 제거되지 않고 보관되고만 있다면 어떤 방법이든 크게 상관은 없습니다. 가장 쉬운 방법이라서 그렇게 알려드린겁니다.”

 

새로 시작해야하는 커밋 지점으로 옮긴다(reset --hard)

git reset --hard [커밋 ID]

 

반영할 commit들을 cherry-pick 해보자(cherry-pick)

git cherry-pick [커밋 ID]

  • 3개의 commit들을 반영할 것이기 때문에 아래 commit부터 차례대로 cherry-pick을 해주자

 

마무리 force push

git push -f origin master

 

결과

 

pr

 

  • 깔끔하게 commit log가 정리됐다 !

remote repo commit log

 

정리

  • 이전 커밋들을 보관하기 위해 backup branch를 생성한다
  • master branch의 HEAD를 commit 이 겹쳐지게 된 시점으로 reset 한다
  • 반영할 commit들을 순서대로 cherry-pick 한다
  • 마무리로 force push를 한다

 

 

728x90
profile

자바생

@자바생

틀린 부분이 있다면 댓글 부탁드립니다~😀

검색 태그