사이드 프로젝트 작업 중에 너무 자잘한 커밋이 많아서 rebase -i로 하나로 합치려고 했어요. 로컬에서는 잘 합쳐졌는데 서버에 올리려니까 계속 거부당해서 왜 이러는지 모르겠어요.
코드:
git rebase -i HEAD~3
# pick a1b2c3d 첫 번째 커밋
# squash e4f5g6h 두 번째 커밋
# squash i7j8k9l 세 번째 커밋
git push origin main
오류: [rejected] main -> main (non-fast-forward)
error: failed to push some refs to 'https://github.com/user/repo.git'
hint: Updates of refs/heads/main were rejected because the tip of your current branch is behind its remote counterpart.
시도: git pull을 먼저 해봤는데 그러면 합쳤던 커밋들이 다시 살아나서 merge 커밋이 새로 생겨버려요.
질문: rebase로 히스토리를 수정했을 때 기존 원격 저장소에 덮어씌우려면 어떻게 push 해야 하나요?
댓글5
-
빗방울
2026.10.31 01:25
-
빗방울
2026.10.31 01:59
맞음ㅋㅋ 근데 협업 중이면 팀원들 히스토리 다 꼬일 수 있으니까 조심해야 됨요.
-
빗방울
2026.10.31 04:23
맞아요ㅋㅋ
그냥 -f 때리는 게 답임ㅇㅇ
-
빗방울
2026.10.31 04:23
불안하면 push --force-with-lease 써보세요
이게 그나마 안전한 버전이라
전 보통 이거 씀ㅋㅋ
-
빗방울
2026.10.31 06:09
아 pull 먼저 하셨으면 진짜 헬파티였을 뻔했네요ㄷㄷ
다행히 지금이라도 물어보신듯ㅋㅋ 그냥 위에서 말한 대로 강제 푸시 하세요
모든 이야기1511
가벼운 안부부터 깊은 생각까지, 함께 나눠요.
이거 강제로 밀어넣어야 됨ㅋㅋ git push -f 하시면 될듯요.