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
'Git' 카테고리의 다른 글
[kerdy] 서브모듈을 사용해서 yml 숨기기(feat. 하나의 yml에서 여러 profile 관리하기) (2) | 2023.08.02 |
---|---|
여러 개의 commit을 하나의 commit으로 합치기 (0) | 2022.06.13 |