-
[ Git & Github ] Rebase 사용을 인한 PR 에 중복된 커밋Git & Github 2022. 2. 27. 19:53
1. 상황 [ rebase 하고 중복 커밋이 이력에 남음 ]
Rebase 를 하고 PR 을 보내는 와중에 아래와 같이 중복된 커밋을 마주 하게 되었다.
1. branch step1 을 작업하고 upstream에 PR 을 보냈다.
2. PR 을 보내고 step1 에서 따낸 step2 , step3 , step4 에서 추가 작업을 진행했다.
3. step1의 작업이 upstream 에 머지되고 upstream을 fetch 하고 그 위에 rebase 를 했다.
그리고 리베이스한 브랜치를 푸쉬하는순간!
바로 풀 먼저 당기라는 문구를 접하게 되었다.
"
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
"
2. 원인 파악
문제는 여기서 pull 을 받은 것이다.
rebase 를 로컬에서 먼저 진행했으니 원격과 달라지는 것은 당연한 결과였다.
이미 해당 브랜치는 원격저장소에 푸쉬되 었고 로컬에서 리베이스를 통해 이력이 바뀌었다.
pull 을 받으면 rebase로 인해 이사갔던 커밋들과 원격에 있던 커밋은 다르게 취급되어 중복 커밋이 발생하게 된 것이다.
3. 해결 방법
해결방법은 force push 입니다.
처음에는 push -f 를 치는 것이 겁났지만 다음 같은 상황에서는 사용해야합니다.
로컬에서 재배치한 작업을 원격 저장소에 force push 를 하는 것으로 예쁜 커밋 이력을 볼 수 있습니다.
아래는 그림은 rebase 상황을 해당 사이트에서 시뮬레이션 한 것입니다.
git 이 익숙하지 않으시다면 해당 사이트가 도움이 될 것 같습니다.
https://learngitbranching.js.org/?locale=ko
Learn Git Branching
An interactive Git visualization tool to educate and challenge!
learngitbranching.js.org
'Git & Github' 카테고리의 다른 글
[ Git & GitHub] Merge revert 후 재병합 (0) 2022.05.07