如何在Visual Studio中删除未按下的传出提交?

时间:2017-11-04 18:29:06

标签: git visual-studio visual-studio-2017

我不小心将Visual Studio 2017中新分支的分阶段更改推送到本地存储库。它尚未被推送到远程存储库。我想摆脱它,但无法找到办法做到这一点。我从当地的主分支机构改为新的分支机构。然后我删除了新分支。但外出的提交人仍然表明了这一点。如何删除或还原它?

enter image description here

8 个答案:

答案 0 :(得分:85)

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

根据您要对更改执行的操作,请选择 hard ,这将在本地删除它们。或者选择 soft ,这将取消提交,但会使您的工作目录中包含您丢弃的提交中的更改。

答案 1 :(得分:16)

TL; DR:

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


我今天面对这个问题,不知VSCode提出了这样的建议,而哥哥Visual Studio却没有。

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

只有jessehouwing's的答案是最接近简单解决方案的。


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

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

undesired-commit-solved example

系统将提示您cmd窗口,在其中输入git reset --soft HEAD~。 如果有多个不希望的提交,请在~(即git reset --soft HEAD~5)之后添加金额


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

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

答案 2 :(得分:14)

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

比方说,您无意间对更改进行了更改的分支名称为master。四个简单的步骤对我来说就像是一个世界:

  1. 转到分支机构
  2. 选择或创建master以外的任何分支
  3. 删除master的本地/工作区版本
  4. remotes/origin切换为母版

答案 3 :(得分:3)

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

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

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

答案 4 :(得分:0)

您有2种选择,要么放弃所有外发提交,要么撤消特定的提交..

1-丢弃所有外发提交:

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

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

所以现在您有了一个没有提交的新分支..

2-撤消特定的提交: 要撤消特定的提交,您必须将不需要的内容还原为:

1-双击不需要的提交。 Double click on the unneeded commit 2-单击还原 Click on revert

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

答案 5 :(得分:0)

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

答案 6 :(得分:0)

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

答案 7 :(得分:0)

我通过推送我的更改在 Github 桌面应用程序中修复了它。