**注意:**基于执行git reset --hard
后更新遥控器的意图,此问题的标题已更改。为了解上下文,这一问题的原标题是:
如何在Visual Studio中重置到之前的Git提交,并让远程分支反映更改?
我知道以前有人问过这个问题,但我还是不能让事情运转起来。
有两个提交我需要摆脱。从树的顶端我有:BadCommit 1 BadCommit 2 GoodCommit
在VS 2019中,我右键单击GoodCommit -> Reset -> Delete Changes
它在本地重置为GoodCommit。但是如果我尝试将其推送到存储库,我会得到一条消息,说本地分支在远程分支后面。如果我拉和推,我只是回到我开始的地方与2个BadCommits在顶部。
如何将远程分支返回GoodCommit?
1条答案
按热度按时间pengsaosao1#
**更新:**此答案包括Visual Studio 2022、2019和2017中强制推送的说明。
任何时候你在远程上替换提交,你不能只是 push,你需要 * 强制push*。下面我将解释如何从Visual Studio 2022和VS 2019(包括VS 2017的新方式和旧方式)以及命令行强制推送。我将从命令行开始,以解释强制推送的不同方式:
git push --force
#在服务器上删除这个分支,并将其替换为本地分支上的任何提交git push --force-with-lease
#删除服务器上的这个分支,并将其替换为本地分支上的任何提交,但前提是该分支上没有我尚未获取的新提交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
: