You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VS2019 RC4提交GitHub失败,如何不拉取远程提交并覆盖本地错误提交?

解决方案:放弃本地错误提交,用指定版本覆盖并推送(无需拉取远程)

没问题,我来帮你搞定这个场景!首先咱们先理清楚核心需求:扔掉本地那两个错误的提交(2019.03.27下午、2019.03.28上午),用你手里的「2019.03.30」版本直接覆盖,同时跳过拉取远程提交的步骤。下面分两种操作方式,你选顺手的来:

方式一:用命令行快速操作(推荐)

第一步:先把正确版本提交到本地

确保你当前工作区的代码就是「2019.03.30」的正确版本,没有未保存的修改。然后打开终端(VS2019里可以直接打开Git Bash),执行:

git add .
git commit -m "2019.03.30: 最终正确版本"

第二步:移除错误提交的历史

假设那两个错误提交是最近的2个(加上刚提交的正确版本,总共3个提交),执行交互式变基命令:

git rebase -i HEAD~3

这会弹出一个文本编辑器,里面会列出最近3条提交记录。找到那两个错误提交的行,把开头的pick改成drop,然后保存退出(比如Vim里按:wq,Notepad++直接保存关闭)。

完成后,你的本地提交历史就只剩下错误提交之前的基础版本,加上刚提交的正确版本了。

第三步:强制推送到远程

因为本地历史已经和远程不一样了,必须用强制推送覆盖远程(重要提醒:如果远程分支有其他人的提交,这么做会直接丢失他们的工作,一定要确认没人在这个分支上干活!):

git push origin main --force-with-lease

用--force-with-lease比直接--force更安全,它会先检查远程分支有没有被其他人修改过,如果有就会终止推送,避免误删别人的工作。

方式二:用Visual Studio 2019图形界面操作

如果你不习惯命令行,VS2019也能完成这些操作:

  1. 打开「团队资源管理器」,切换到「提交」标签页,点击右上角的「查看历史记录」。
  2. 找到那两个错误提交的前一个正确提交(也就是错误提交之前的版本),右键点击它,选择「重置」→「硬重置」。这会把本地分支和工作区直接回滚到那个正确的基础版本。
  3. 回到「更改」标签页,把你手里的「2019.03.30」版本的所有修改选中,点击「提交」,填写提交信息后完成提交。
  4. 切换到「同步」标签页,点击「推送」。如果VS提示远程历史和本地冲突,找到「选项」里的强制推送开关(可能需要在设置里开启),选择强制推送即可。

关键注意事项

  • 强制推送是把双刃剑:如果远程分支上有其他同事的提交,这么做会彻底覆盖掉他们的工作,所以执行前一定要确认这个分支只有你在使用,或者已经和团队沟通好可以覆盖历史。
  • 你之前提交失败的原因是远程有未合并的提交,用上面的方法跳过拉取直接推送,本质是用本地的新历史完全替换远程的历史,所以一定要确保这是你想要的结果。

内容的提问来源于stack exchange,提问作者102425074

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 04:50:23