Git本地回滚重新修改代码再push到远程问题

新手上路,请多包涵

操作步骤是这样的:
1.本地git reset --hard commit id回退到某个版本
2.回退版本后,未push到远程就修改了本地代码
3.修改完后再push到远程,提示先pull
4.问题是pull远程代码就覆盖掉本地修改的了

请问如何操作能把本地修改后的代码push到远程?

阅读 14.3k
3 个回答

为什么还要 pull。。。

一开始是这样:

A - B - C - D    远程
A - B - C - D    本地

第一步,git reset --hard B

A - B - C - D    远程
A - B               本地

第二步,修改本地代码,记为 E

A - B - C - D    远程
A - B - E          本地

pull 远程代码

A - B - C - D    远程
A - B - E - D'    本地

其中,D' 包含了 C 和 D 的改动,因为 git pull 相当于 git fetch 加上 git merge。这个时候 merge 的是 "Fetched HEAD",也就是远程的 D。同时,D' 的 message 应该会出现一句 "merge … from ...."

如果你希望远程是 A - B - E,那就不要 pull,直接 git push -f

新手上路,请多包涵

注意使用-f后,之前的C和D都会消失在远程仓库中。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进