【问题标题】:How do you force push in Visual Studio 2019?如何在 Visual Studio 2019 中强制推送?
【发布时间】:2021-07-11 22:58:19
【问题描述】:

注意:此问题的标题已根据执行git reset --hard 后更新遥控器的意图进行了更改。就上下文而言,这个问题的原标题是:

如何在 Visual Studio 中重置为之前的 Git 提交并获取远程分支以反映更改?

我知道以前有人问过这个问题,但我仍然无法正常工作。

我需要摆脱两个提交。所以从树的顶部我有: 错误提交 1 错误提交 2 好提交

在VS 2019中,我右键GoodCommit -> Reset -> Delete Changes

它在本地重置为 GoodCommit。但是,如果我尝试将其推送到存储库,我会收到一条消息,指出本地分支位于远程分支之后。如果我拉和推,我就会回到我开始的地方,顶部有 2 个 BadCommit。

如何将远程分支返回到 GoodCommit?

【问题讨论】:

    标签: git visual-studio github git-commit


    【解决方案1】:

    任何时候你在远程替换提交,你不能只是推送,你需要强制推送。下面我将解释如何从 Visual Studio 2019(包括 VS 2017 的新方式和旧方式)和命令行强制推送。我将从命令行开始,以解释您可以强制推送的不同方式:

    1. git push --force # 删除服务器上的这个分支,并用我本地分支上的任何提交替换它
    2. git push --force-with-lease # 删除服务器上的这个分支并将其替换为我本地分支上的任何提交,但前提是分支上没有我尚未获取的新提交
    3. git push --force-if-includes # 删除服务器上的这个分支并将其替换为我本地分支上的任何提交,但前提是我的 reflog 中有远程提示提交。这是一个相对较新的选项,在more detail here 中有描述。

    我强烈建议大多数时候使用#2,当你在 VS 中强制推送时,这也是 Visual Studio 所做的。要在 Visual Studio 2019 中启用强制推送,请转到 Git 主菜单,选择设置(或工具菜单、选项),选择源代码管理,然后选择 Git 全局设置:

    然后选中“启用推送--force-with-lease”复选框:

    一旦你启用了设置,下次你尝试推送并且你的分支已经发散时,你会看到一个新的选项:

    点击“Force Push”按钮等同于运行命令行:

    git push --force-with-lease

    注意: VS2019 中的 Git 菜单是新的。如果您没有看到它,并且想尝试它,可以从工具->选项中启用它,选择环境,预览功能,然后选中“新 Git 用户体验”框:

    同样,如果您选中它但不喜欢它,取消选中该框将设置 Git,就像它过去在 Visual Studio 2017 的团队资源管理器中一样。

    如果您没有启用 Git 菜单(或者您使用的是 VS 2017),则可以在团队资源管理器、设置、Git 全局设置中找到强制推送设置,然后选中“启用推送--力”。

    请注意,您在屏幕上看到的 --force 是 VS2019 和 VS2017 中 Team Explorer 中的拼写错误,实际上是 --force-with-lease

    【讨论】:

    • 非常感谢!你真的救了我的培根。抱歉,我无法早点回复 - 刚开始工作。这非常有效。
    • 说真的 - 我真的很感谢您花时间制作所有屏幕截图并使其非常清晰。
    • 在 MS Visual Studio 2019 16.9.x 中(在某些以前的 16.xx 版本中可能也是这种情况),git force push 选项移至 Options/Source Control/Git Global Settings/Enable push --强制租赁。
    • @TomasTintera 对。在我的 16.9 上,我可以像你建议的那样从 Git 菜单或 Tools->Options 访问它。我用该信息更新了答案。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-16
    • 2017-07-16
    • 2021-01-22
    • 1970-01-01
    • 2021-05-11
    • 1970-01-01
    相关资源
    最近更新 更多