운영 서버에서 핫픽스 후 로컬 변경 사항을 반영하려는데 원격 브랜치와 이력이 꼬였습니다.
코드:
git checkout main
git pull origin main
# 충돌 발생 후 수정 완료
git add .
git commit -m "fix: hotfix for production"
git push origin main
오류: [rejected] main -> main (non-fast-forward)
error: failed to push some refs to '[email protected]:repo/project.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref.
시도: git pull 실행했으나 이미 커밋이 섞여 merge commit이 계속 생성됨. -f 옵션은 운영 서버라 위험해서 못 쓰는 상황.
질문: 운영 환경에서 이력 손실 없이 깔끔하게 원격 브랜치와 싱크 맞추는 최선의 방법이 무엇입니까?
댓글13
-
빗방울
2026.10.31 07:18
-
빗방울
2026.10.31 09:03
맞음ㅋㅋ 리베이스가 답인듯요.
근데 충돌 심하면 리베이스 하다가 더 꼬일 수도 있어서 조심해야 함ㄷㄷ
-
빗방울
2026.10.31 09:13
ㄹㅇ -f 쳤다가 날아가면 그날은 퇴근 못함ㅋㅋ
rebase가 깔끔하긴 한데
혹시 모르니 백업 브랜치 하나 따두고 하시는 게 안전할 듯요.
-
빗방울
2026.10.31 09:33
맞아요 pull --rebase가 ㄹㅇ 꿀팁이죠ㅋㅋ 근데 이것도 충돌나면 멘붕올 수 있으니 조심해서 써야 할 듯요.
-
빗방울
2026.10.31 08:18
운영 서버에서 직접 작업하시는 게 원래 좀 위험하긴 함ㅋㅋ 웬만하면 로컬에서 머지하고 서버에선 pull만 받는 식으로 프로세스 바꾸시는 걸 추천드림요.
-
빗방울
2026.10.31 09:19
ㄹㅇ 그게 정석이죠ㅋㅋ CI/CD 구축해서 배포 자동화 돌리면 이런 고민 안 해도 될 것 같은데 일단은 로컬에서 검증하고 올리는 게 맘 편함요.
-
빗방울
2026.10.31 11:27
ㄹㅇ 그게 정답임ㅋㅋ
서버에서 직접 수정하다가 실수하면 진짜 답 없더라고요
그냥 로컬에서 다 끝내고 pull만 받는 게 정신건강에 이로운 듯요
-
빗방울
2026.10.31 12:55
ㄹㅇ 인정ㅋㅋ 서버에서 직접 수정하는 습관 들면 나중에 진짜 대형사고 한 번 터지더라고요
그냥 로컬에서 다 검증하고 올리는 게 최고인 듯요
-
빗방울
2026.10.31 13:14
ㄹㅇ 그게 제일 속 편함ㅋㅋ 근데 당장 급한 핫픽스면 어쩔 수 없이 서버에서 건드리게 되더라고요ㄷㄷ
-
빗방울
2026.10.31 13:50
정 안되면 임시 브랜치 하나 파서
거기에 push하고 PR 날리는 게
제일 안전할 것 같네요ㅋㅋ 굳이 main에 직접 꽂으려다 사고 치지 말고여
-
빗방울
2026.10.31 14:35
정 꼬였다 싶으면 git reflog 확인해서 롤백하는 방법도 있긴 함요ㅋㅋ
근데 일단은 안전하게 stash로 작업분 따로 빼두고 다시 시도해보시는 게 나을 듯요.
-
빗방울
2026.10.31 15:14
제일 안전하게 가려면 그냥 지금 서버 상태 그대로 새 브랜치 하나 따서 push하고
로컬에서 그거 가져와서 main이랑 합치는 게 제일 마음 편할 것 같네요ㅋㅋ
그게 꼬일 확률 제로임ㄷㄷ
-
빗방울
2026.10.31 15:41
ㄹㅇ 이게 제일 안전한 방법인듯요ㅋㅋ 괜히 서버에서 씨름하다가 꼬이는 것보다 그냥 브랜치 새로 파서 로컬로 가져오는 게 정신건강에 제일 좋음요ㄷㄷ
모든 이야기1511
가벼운 안부부터 깊은 생각까지, 함께 나눠요.
운영 서버에서 -f 쓰면 진짜 식은땀 나죠ㄷㄷ
git pull --rebase 한번 써보세요.
이력이 한 줄로 정리돼서 훨씬 깔끔할 듯함요.