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

Ton*_*ich 71 git visual-studio visual-studio-2017

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

在此输入图像描述

jes*_*ing 121

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

根据你想要做什么改变选择,这将在本地摆脱它们.或者选择soft将撤消提交,但会使您的工作目录中包含丢弃提交中的更改.

  • 值得投入大胆的部分,你必须选择在乱搞提交的PARENT上重置** - 奇怪的是VS2017,在你提交之后,为你提供了一个菜单选项,可以在提交时执行重置目标你做了(一个没有操作) - 我花了几分钟直到找到你的帖子并意识到我应该重置[To]父提交..菜单选项"重置"的措辞略显差 - 听起来像它会重置一个特定的提交==暗示它应该在该提交上使用.如果它是重置我认为我会更快地理解它 (15认同)
  • (@JH)感谢您的回答。.. atCJ 谢谢你的评论。atJH 感谢您对那部分加粗... atEverybody....那是我被卡住的部分....我的意思是卡住了。#自由 (3认同)

Tza*_*Leh 52

特尔;博士:

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


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

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

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


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

转到Team Explorer-> Sync。在那里你会看到所有的提交。按下拉Actions菜单和Open Command Prompt

不想要的提交解决的例子

你会得到 cmd 窗口的提示,在那里写git reset --soft HEAD~. 如果有多个不需要的提交,在~(ie git reset --soft HEAD~5)


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

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


Cha*_*ion 29

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

让我们说分支的名称,你不小心提交了更改,是master.以下四个简单步骤对我来说就像一个世界:

  1. 去分行
  2. 选择或创建除以外的任何分支 master
  3. 删除本地/工作区版本 master
  4. 切换到主人 remotes/origin

  • 这是行之有效的答案,您不必强制执行“还原” (3认同)
  • 这是有效的,但是当您只想要来自 Outgoing Commit 的某些(不是全部)特定提交时,您会陷入困境。 (3认同)
  • 如果您很高兴丢失所有传出提交,这是最简单、最好的解决方案。 (2认同)