如何在Visual Studio中强制推送?

plicqrtu  于 2023-05-18  发布在  其他
关注(0)|答案(1)|浏览(192)

**注意:**基于执行git reset --hard后更新遥控器的意图,此问题的标题已更改。为了解上下文,这一问题的原标题是:

如何在Visual Studio中重置到之前的Git提交,并让远程分支反映更改?
我知道以前有人问过这个问题,但我还是不能让事情运转起来。
有两个提交我需要摆脱。从树的顶端我有:BadCommit 1 BadCommit 2 GoodCommit
在VS 2019中,我右键单击GoodCommit -> Reset -> Delete Changes
它在本地重置为GoodCommit。但是如果我尝试将其推送到存储库,我会得到一条消息,说本地分支在远程分支后面。如果我拉和推,我只是回到我开始的地方与2个BadCommits在顶部。
如何将远程分支返回GoodCommit?

pengsaosao

pengsaosao1#

**更新:**此答案包括Visual Studio 2022、2019和2017中强制推送的说明。

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

  1. git push --force #在服务器上删除这个分支,并将其替换为本地分支上的任何提交
  2. git push --force-with-lease #删除服务器上的这个分支,并将其替换为本地分支上的任何提交,但前提是该分支上没有我尚未获取的新提交
  3. git push --force-with-lease --force-if-includes #在服务器上删除这个分支,用我本地分支上的任何提交替换它,但前提是分支上没有我还没有获取的新提交,前提是我的reflog中有远程tip提交。这是一个相对较新的(ish)选项,在more detail here中进行了描述。
    我强烈建议大多数时候使用#2,这也是Visual Studio在VS中强制推送时所做的。要在Visual Studio 2022和2019中启用强制推送,请转到主Git菜单,选择设置(或工具菜单,选项),选择源代码控制,然后选择Git全局设置:

然后勾选“Enable push --force-with-lease”复选框:

一旦您启用了该设置,下次您尝试推送时,您的分支已经分叉,您将看到一个新选项:

单击“强制推送”按钮与运行命令行相同:
git push --force-with-lease

**注意:**Git菜单是VS 2019中的新功能。如果你有一个旧版本的VS 2019,你没有看到它,你想尝试它,你可以从工具->选项启用它,选择环境,预览功能,然后选中“新Git用户体验”框:

类似地,如果您选中了它并且不喜欢它,则取消选中该框将像在Visual Studio 2017中的团队资源管理器中一样设置Git。
如果您没有启用Git菜单(或者您使用的是VS 2017),则可以在团队资源管理器,设置,Git全局设置中找到强制推送设置,然后选中“启用推送--force”框。

请注意,您在屏幕上看到的--force是VS 2019和VS 2017中团队资源管理器中的错别字,它实际上是--force-with-lease

相关问题