Visual Studio 2013团队资源管理器/Git集成丢失文件

32

我已经将Visual Studio 2013与本地Git集成和BitBucket设置好了。

到目前为止,这一切都很顺利,但我注意到Visual Studio停止跟踪新创建的文件(通过IDE创建的文件,如新的.cs文件),以便上传到BitBucket。

  • 从已跟踪的文件中进行更改的提交/推送仍然正常工作
  • 新文件显示在“排除的更改”或“未跟踪的文件”列表中
  • 新文件包括在项目文件中(并且这些文件显示了正确的更改)
  • 这些文件绝对没有以其他方式被排除(.gitignore等)。

还有什么原因可能导致新文件不再被跟踪?


4
以防有人遇到这个问题 - 作为一种解决方法,我能够将这些文件从项目中排除,然后再重新包含它们,这样 Visual Studio 就能将它们识别为新文件了。虽然不理想,因为有可能会漏掉一些文件,但这是我所能做的。 - Alex
Alex,你能澄清一下你所说的排除和重新包含的意思吗? - Edward Thomson
2
让我为你分解一下 @EdwardThomson:解决方案资源管理器 -> 右键单击 -> 从项目中排除;然后解决方案资源管理器 -> 显示所有文件 -> “选择排除的文件” -> 右键单击 -> 包含在项目中。昨天我遇到了这个问题。我不太确定它是怎么发生的,也不知道为什么会发生。我猜可能是当我克隆文件时发生的。这样做很烦人。看到文件被随机地排除在源代码控制之外是一种可怕的感觉。很糟糕,很糟糕,很糟糕。 - Fernando Espinosa
1
这个问题仍然存在。Microsoft Connect 上有关于此的工单吗?我想支持它,但是我找不到相关的工单。 - vinczemarton
我在我们团队的一台开发机上遇到了同样的问题,而其他机器上却没有出现这个问题,有什么解决方法吗? - Amit Mittal
这里有类似的问题。使用VS2013,最新更新。偶尔会出现,有时文件无法被跟踪。 - Sentinel
12个回答

34

我最近也经历了类似的问题,但是排除并重新包含丢失的文件对我没有作用。在VS2013 Premium中,我注意到在更改窗口底部有一个“未跟踪的文件”部分。只需要右键单击要包含的文件并添加即可。确实不太理想,但这是另一种解决方法。


1
我也用了类似的方法来解决这个问题。虽然很愚蠢,但至少它有效。 - Blaise
1
你能进一步解释这个问题吗?新文件应该是未跟踪的,这是设计上的要求。 - Edward Thomson
2
基本上,使用GIT时,新文件会显示为未跟踪状态,但是使用TFVC时,新文件会自动作为待处理更改的一部分被跟踪。我认为这不是一个错误,但与使用TFVC时那样便利还有些差别。一旦你知道必须手动跟踪新文件/文件夹,就不算大问题,但对于刚接触GIT的人来说可能有点困惑(比如我)。 - hawkke
我一直在提交代码,但现在才意识到并不是所有的代码都被推送了。很高兴它从来没有到达过我必须依赖这些提交的阶段。只有当我更换了新电脑并发起了一个拉取请求时,我才发现这个问题。 - TEK
好的,算了,它显示这些文件是未跟踪的,因为文件名旁边有“[add]”,而不是它们自己的部分。 - Edward Rixon
显示剩余2条评论

3
我和楼主遇到了同样的问题:
- 对于已经跟踪的文件,提交/推送更改仍然有效。 - 新文件未显示在“排除的更改”或“未跟踪的文件”列表中。 - 新文件包含在项目文件中(并且这些项目展示了正确的更改)。 - 这些文件明确没有以其他方式被排除(.gitignore或其他方式)。
因此,似乎Visual Studio认为这些文件是已跟踪的,但实际上并非如此,因为它们不会出现在未跟踪的文件列表中。 我的解决方法 由于我无法在 Visual Studio 中添加未跟踪的文件,所以解决方法是使用 Git bash,并手动为每个应添加的文件执行 git add。之后,它们在 Visual Studio 中可以正常工作。
希望这个问题很快得到解决......除了这个漏洞,我短时间内尝试了一下,Git 集成看起来非常好用。

我也注意到在使用git bash之后,VS似乎又可以工作了。有趣的是要看它能持续多久。 - Thomas Eyde

2
即使这个问题已经很老了,但我上周在VS2013上遇到了类似的问题,而且之前的所有解决方法都对我无效。 在编辑文件时,它会出现在Team Explorer修改文件列表中,但只要保存后,它们就会从任何列表中消失。其他工具(git bash,tortoise等)将它们视为修改和未提交,但VS不行。 我通过在Team Explorer的Git参数中生成解决方案的.gitIgnore文件来解决了这个问题!希望这可以帮助您。 可能与此相关: Git changes not showing in VS2013 Update 2

我在一台新机器上安装了VS2013 Update 5和VS 2015,遇到了这个问题,让我很烦恼。后来我发现,如果我安装Git for Windows,问题就解决了!https://git-for-windows.github.io/ - fhilton

2
我有同样的问题,我添加了一个 .cs 文件,但 VS 没有将其识别为已添加,并且不会将其包含在我的更改中。
作为解决方法,您可以打开SourceTree(由Atlassian制作,用于与BitBucket一起使用),查看“未暂存的文件”部分,右键单击 > 添加文件。VS 将立即接受更改/添加,您可以通过 VS 提交。
并不理想,因为您仍然无法信任/依赖 VS 来跟踪您的提交。

1
我在Visual Studio 2013版本12.0.21005.1 REL中遇到了同样的问题。我将一个名为hello.cs的测试文件放在一个特定的文件夹中,它显示为“未跟踪”,但是如果我将相同的文件放在另一个文件夹中(也在同一个存储库文件夹中),它就不会出现在任何地方(包括、排除或未跟踪)。
原来我有一些深层次的文件夹,其中包含Bootstrap和JQuery,它们本身有.gitignore和.gitattribute文件。当我将它们重命名为disabled.gitignore和disabled.gitattribute,并点击Visual Studio Team Explorer窗格顶部的小刷新图标时,所有丢失的文件都重新出现了!太好了!
看起来这是Visual Studio 2013的一个bug,也许是旧版本的问题,因为我本来期望.gitignore文件只在它们自己的文件夹内生效,但它们似乎会影响Visual Studio继续遍历整个文件夹层次结构,而且不特别按照字母顺序或深度优先/深度最后的顺序!

如果您认为我们的gitignore处理存在错误,请提交详细的错误报告,包括您的gitignore文件内容。当然,根据内容,gitignore也会适用于子目录,这是设计上的考虑。 - Edward Thomson

0

我有类似的问题,我的解决方案是使用TortoiseGit。如果我想提交,在“未版本化文件”部分,TortoiseGit会显示在.gitignore中不匹配但已添加到文件系统中的文件。您可以简单地勾选所有文件(如果您想要添加它们)并按提交按钮。

enter image description here

这不仅是 Visual Studio Git 的一个问题。特别是那些没有价值的一般性错误信息。每次我都不得不切换到 TortoiseGit 或 Git bash 来查找 Visual Studio Git 工具不喜欢的内容。


0

我遇到了这个问题。从项目中移除再重新添加并在每一步之间进行提交仍然无效。最终我不得不使用Source Tree编写提交,然后使用VS将其推送到vsto。


0

我以前也遇到过这个问题,结果是因为我安装在Windows上的git版本太旧了。更新一下就可以让VS再次跟踪和提交git仓库了。

https://msysgit.github.io/


谢谢,这就是给我安装Git for Windows的想法,并且解决了问题。 - fhilton

0
在我的情况下,我通过从 shell 手动添加来解决这个问题。

0

我通过在本地仓库与我的.git文件夹同级的位置添加一个.gitignore文件来解决了这个问题。

  1. 在连接到您的Git项目的Team Explorer中,单击下拉菜单并选择设置
  2. Git下点击Git设置 enter image description here
  3. 在底部,在存储库设置 > 忽略文件下点击添加 enter image description here

这将为您创建一个默认的.gitignore文件。这对我很有效,但您也可以将文件内容替换为此处推荐的内容:https://github.com/github/gitignore/blob/master/VisualStudio.gitignore

希望这能帮助到有需要的人!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接