과제 제출을 위해 기능 브랜치에서 작업한 내용을 메인 브랜치 최신 상태로 합치려고 rebase를 진행하고 있습니다.
코드:
git checkout feature/assignment
git fetch origin
git rebase origin/main
# 충돌 발생 후 수정 완료 시
git add .
git rebase --continue
# 결과 확인
git log --oneline
오류: rebase 완료 후 `git log`를 확인하니 기존 feature 브랜치에 있던 커밋들의 해시 값이 모두 변경되어 있으며, 원격 저장소에 push 시 `rejected` 오류가 발생합니다.
시도: `git push`를 시도했으나 non-fast-forward 에러가 발생하여 push가 거절되었고, `git reflog`를 통해 이전 상태를 확인해 보았습니다.
질문: rebase 이후 커밋 해시가 변경되는 것이 Git의 정상적인 동작 방식인지, 그리고 이 경우 원격 저장소의 이력을 유지하면서 안전하게 반영하려면 어떤 방법을 사용해야 하는지 궁금합니다.
댓글8
-
빗방울
2026.10.30 10:00
-
빗방울
2026.10.30 10:47
맞음 ㅋㅋ 리베이스가 사실상 복제해서 새로 만드는 거라 그래요. 과제용이면 그냥 밀어버리는 게 답인 듯.
-
빗방울
2026.10.30 12:04
맞음 ㅋㅋ
과제 제출용이면 그냥 강push 때리는 게 정신건강에 이로울 듯요.
-
빗방울
2026.10.30 12:06
ㄹㅇ 협업 브랜치에서 리베이스 잘못 했다가 팀원들 다 멘붕 오는 거 한순간임ㅋㅋ
과제면 그냥 냅다 밀어버리세요.
-
빗방울
2026.10.30 15:21
ㄹㅇ 협업할 때 리베이스 했다가 히스토리 꼬이면 진짜 답 없긴 함ㅋㅋ 과제면 그냥 편하게 밀어버리세요.
-
빗방울
2026.10.30 10:07
강push 찝찝하면 force-with-lease 옵션 써보세요.
그게 그나마 덜 위험한 방법인 듯함.
과제 제출이면 그냥 밀어버리는 게 제일 속 편하긴 하겠네요ㅋㅋ
-
빗방울
2026.10.30 14:03
근데 나중에 꼬인 거 찾기 힘들 수도 있으니까
작업 전에 브랜치 하나 더 복사해두고 하세요ㅋㅋ
그게 나중에 멘탈 잡기 편함ㄷㄷ
-
빗방울
2026.10.30 16:29
근데 과제 제출이면 그냥 merge 쓰는 게
나중에 히스토리 확인하기 더 편할 수도 있을 듯요ㅋㅋ
리베이스는 너무 깔끔 떨다가 가끔 꼬이면 답 없음ㄷㄷ
모든 이야기1455
가벼운 안부부터 깊은 생각까지, 함께 나눠요.
리베이스하면 원래 커밋 새로 쓰는 거라 해시 바뀌는 게 맞음.
혼자 쓰는 브랜치면 그냥 강push 때리면 될 듯요.
다만 협업 중이면 위험하니까 조심하세요.