VS中的TFS/GIT无法切换到master,因为存在未提交的更改

rwk*_*iii 33 git tfs visual-studio visual-studio-2013

我在visualstudio.com上为VS 2013解决方案设置了一个GIT存储库.当我习惯于使用TFS(在GIT模式下)时,存储库工作得很好.

然后我决定熟悉分支,所以我创建了一个分支.我在这个分支中做了很多改动.我已经提交了一段时间内的更改并执行了同步以将我的本地提交推送到visualstudio.com存储库.这一切都有效.

我遇到的问题是我不知何故失去了切换回主分支的能力.我无法将新创建的分支合并到主服务器中.每次我尝试做任何涉及主人的事情我都会在VS中收到以下错误:

无法切换到master,因为存在未提交的更改.在切换分支之前提交或撤消更改.有关详细信息,请参见输出窗口

"输出"窗口从不包含任何"详细信息"...

此消息所指的"未提交的更改"是什么?由于我无法进入主分支,因此我无法进行任何更改(我也不确定是否要这样做?).我所在的当前(唯一的)分支已经提交并同步.

我真的只是学习TFS,GIT和源代码控制.我如何安全地从这个问题中恢复?

Kus*_*han 47

好吧,我自己和rwkiii有同样的问题 - 这是Visual Studio中的一个错误,并不容易修复.以下是症状:

Visual Studio声明您无法合并/切换braches/etc. 因为你有未提交的更改-这是很好的,但所有更改被提交.

无法切换到master,因为存在未提交的更改.在切换分支之前提交或撤消更改.有关详细信息,请参见输出窗口

这是一个更清晰的截图.

如果查看输出窗口,它可能显示为空,但您必须将"显示输出"更改为"源代码控制 - Git".这将列出Visual Studio 认为已更改的文件.

确保选中

现在,我试过的东西没有解决它(所以你不必):

  • 重新启动Visual Studio
  • 重启机器
  • 切换项目
  • 使用外部git工具(所有这些都说"没有变化")
  • git重置
  • 对文件进行任意更改并提交.提交确定,VS仍然认为有更多变化

最后,我不得不从磁盘中删除该文件,然后从"团队资源管理器"窗口中"撤消"该更改:

单击

不是最理想的解决方案,但似乎确实解决了它.

  • 我必须同意.没有运气我一直在寻找.我正在使用VS 2013而且我被困在一个版本上 - 无法合并回主人.我也没有看到输出 - 所以关于改变的提示,"Source Control - Git"非常有用.注意:从磁盘删除文件后,您的文件可能不会显示在"包含的更改"中.我的出现在排除的变化中. (2认同)
  • 这对我来说不起作用;(这是VS2013的全新安装.从主人那里做了一个新的克隆,它做了一个项目"转换"并添加了一个日志文件.我认为即使输出显示随机文件,它也会偏离轨道?无论如何,我做了一个manul git checkout并修复它.我现在可以毫无问题地自由改变. (2认同)

小智 29

我使用git命令提示符来解决问题.我不能保证这是最好的方式或唯一的方法,但它在Visual Studio 2013中对我有用.

在团队资源管理器中的更改下,选择打开命令提示符.

在命令提示符下键入:

git状态

它将列出可以更改的文件.

复制这些文件(以防万一),然后您可以在命令提示符中放弃工作目录中的更改.

git checkout - mysubdir\myfile.ext

不要尝试在Visual Studio中更改分支,它仍然无法正常工作!

而是在命令提示符处切换到相关分支.

git checkout branchname

当您返回Visual Studio时,它将提示您重新加载项目.之后,分支将正确更新到您从命令行选择的分支.

心连心

  • +1.我没有更改文件(实际上我只是克隆了repro)但VS不会因为这个错误而让我切换.最后我运行了命令`git checkout <branch>`,这很好用.显然是VS插件中的一个错误. (5认同)

小智 2

未提交的更改意味着您修改了一个或多个已添加到 git 的文件,并且这些更改尚未“保存”在提交或 git 存储中。

当您在分支之间切换时,不允许有未提交的更改(不过,尚未添加到 git 的新文件也可以),因为其他分支中的更改可能会覆盖您未提交的更改。

我不熟悉 Visual Studio 如何与 git 集成,因为我自己将PoshGit与 Powershell结合使用

继续的方法是:

  • 撤消您的更改
  • 提交您的更改
  • 或者隐藏您的更改(请参阅中断的工作流程部分)。