如何在Visual Studio中删除未推送的外发提交?


114

我不小心将Visual Studio 2017中新分支中的分阶段更改推到了本地存储库中。它尚未被推送到远程存储库。我想摆脱它,但找不到解决方法。我从本地master分支重新定位到新分支。然后,我删除了新分支。但是“待发邮件”仍显示出它。如何删除或还原它?

在此处输入图片说明


感谢您提出这个问题,我也有同样的问题
Imran Rizvi

Answers:


178

从“分支”磁贴中打开“团队资源管理器”中的“历史记录”选项卡(右键单击您的分支)。然后在历史记录中,右键单击不需要推送的提交,然后选择“重置”。这样会将分支移回该提交,并且应该摆脱您所做的额外提交。为了在给定提交之前重置,您必须选择其父级。

根据您要进行的更改,选择hard,它将在本地将其删除。或选择soft,它将撤消提交,但将保留您的工作目录,其中包含已删除的提交中的更改。


22
值得在其中加粗的部分**您必须在混乱提交的父项上选择RESET **-奇怪的是VS2017,在您执行提交后,会提供一个菜单选项,该菜单选项执行针对提交的重置您刚刚做了(无操作)-我花了几分钟,直到找到您的帖子,并意识到我应该将Reset [To]提交给父提交。。“ Reset”菜单选项的措词略差-听起来像是重置特定的提交==表示应在该提交上使用它。如果它被置为了我想我会更快的理解是
凯斯Jard

1
(@JH)感谢您的回答。.. atCJ谢谢您的评论。atJH谢谢您加粗该部分的内容。#freedom
granadaCoder

命名与git调用命令的方式一致。如果您编辑了文件,这些文件也会被重置。如果您已暂存文件,它们也会被重置。这就是为什么还要重新设置最新提交的原因。它重置为该提交。
jessehouwing

1
有用的知道。感谢您的回答
Rob C

非常感谢它帮助
Ashish Kamble

70

我找不到一个好的答案可以帮助我摆脱这个问题。

假设您不小心提交了更改的分支名称为master。四个简单的步骤对我来说就像是一个世界:

  1. 前往分行
  2. 选择或创建除以下以外的任何分支 master
  3. 删除的本地/工作区版本 master
  4. 从切换为主站 remotes/origin

5
这是revert
行之有效

2
这行得通,但是当您只想从传出提交中进行某些(不是全部)特定的提交时,就会陷入困境。
KatariaA

1
刚收到几张反对票。评论本来很好。
混沌军团

1
作品。干净,快速,简单的解决方案。
汤姆汤姆

2
天哪,谢谢你!直到今天晚上,我从未花45分钟撤消更改。您的评论可以节省一天的时间。
PBJ

3

假设您已将最新更改推送到服务器:

  1. 关闭Visual Studio,然后删除项目的本地副本
  2. 打开Visual Studio,转到“团队资源管理器”选项卡,单击“管理连接”。(插头)
  3. 单击“管理连接,连接到项目”旁边的下拉箭头。
  4. 选择项目,确认本地路径,然后单击“连接”按钮。

重新打开项目后,提交和更改都应为零。


2

TL; DR:

git reset --soft HEAD~在.sln文件夹的cmd中使用


我今天面对它,不知所措,VSCode暗示了这种事情,而哥哥Visual Studio却没有。

大多数答案是有帮助的。如果我之前有更多的提交,全部丢失都会令人沮丧。而且,如果VSCode在半秒钟之内完成操作,应该不会很复杂。

只有jessehouwing的答案才是最简单的解决方案。


假设不希望的提交是最后一次发生,这是我解决的方法:

转到Team Explorer-> Sync。在那里,您将看到所有提交。请按Actions菜单,然后Open Command Prompt

不需要提交解决的示例

您将看到cmd窗口提示,在那里写 git reset --soft HEAD~。如果有多个不希望的提交,请在~git reset --soft HEAD~5)后面加上金额


(如果您不使用git,请检查口语用法)。

我希望它会有所帮助,并希望在下一版本中VS团队将其内置


0

转到“团队资源管理器”选项卡,然后单击“分支”。在分支中,从远程/原点中选择您的分支。例如,您想重置您的master分支。右键单击远程/源中的主分支,然后选择“重置”,然后单击“删除更改”。这将重置您的本地分支,并删除所有本地提交的更改。


0

尝试将本地master分支重新建立到远程/原始master分支上,并解决该过程中的所有冲突。


-1

您可以在此处选择2个选项,以丢弃所有外发的提交或撤消特定的提交..

1-丢弃所有外发的提交:

丢弃所有外发提交例如,如果您的远程分支中有名为master的本地分支,则可以:

1-将本地分支从master重命名为任何名称,以便将其删除。2-删除重命名的分支。3-从母版创建新分支

因此,现在您有了一个没有提交的新分支..

2-撤消特定的提交: 要撤消特定的提交,您必须通过以下方式还原不需要的提交:

1-双击不需要的提交。 双击不需要的提交 2-单击还原 单击还原

但是仅供参考,还原的提交将与还原的提交一起显示在您的提交历史中。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.