Visual Studio TFS Git未看到任何更改

Visual Studio TFS Git not seeing any changes

我对Visual Studio的Git for TFS不感兴趣。

我在TFS上的Git中克隆了一个同事的解决方案,并开始添加代码。然后我意识到我所做的更改需要自己的分支机构,因此按照将新本地分支机构推送到远程git repo中的说明并跟踪它,我也运行了

1
2
git checkout -b e4ctim
git push -u origin e4ctim

当我对代码进行更改时,Visual Studio会在代码文件旁边显示熟悉的红色勾号图标,以确保更改已触发要签出的文件:

VS red-tick

然后,当我保存文件时,Visual Studio会将图标返回到蓝色挂锁。我假设这个从红色勾号到蓝色挂锁的变化意味着这个变化已经在Git本地签入:

VS blue-lock

但是当我查看修改过的文件的历史记录时,却没有任何记录!

No history

我想在本地提交我的更改,并将它们与TFS服务器同步。

Visual Studio根本看不到任何更改:

VS TFS Changes

从命令行中,我可以看到git已经通过运行命令注意到了我的所有修改。

1
git status

并且看到许多没有为提交和未跟踪的文件准备的更改。

git status cmd

在我可以用的Git书前

1
git add

或者更具体地说

1
git add -u .

准备好提交文件,但我不愿意这样做,因为在Git存储库(track,commit)中开发应用程序的Visual Studio文档中声明:

Q: Where is the Git stage?
A: If you are an experienced Git user, you might have noticed that
Visual Studio handles changes differently than the command prompt.
You might have wondered if the Included Changes section contains
your staged changes. In fact, Visual Studio usually bypasses the Git
stage for you. When you commit changes, Visual Studio simultaneously
stages and commits them. The one exception occurs when you add a
file to your Git repository; Visual Studio does stage this kind of
change.

Visual Studio同时准备和提交更改。但是,为什么它没有列出我对跟踪文件所做的任何修改作为更改,从而让我提交它们呢?


这是一种解决方法,而不是解释,但我发现如果忽略了文档"当您提交更改时,Visual Studio会同时进行阶段和提交",而是使用命令将修改添加到阶段

1
git add -u .

然后,Visual Studio突然意识到这些修改,让我在本地提交它们,并将它们与TFS服务器同步。此外,它还将"新文件"的绿色十字线放在我添加的文件上,我发现我可以再进行一次提交,然后进行另一次同步,以获取我所做的添加和删除操作。

从那时起,Visual Studio就按照我的期望进行操作:当我对文件进行更改时,该文件将在提交窗口中列为已更改。

我仍然不知道为什么在最初的git add之后,Visual Studio才能够接受这些更改,但至少现在它可以工作了。


我必须将此行添加到我的.gitignore:

1
[path to project]/node_modules/

显然,VS2015在这方面走了很长的路,并决定放弃所有的希望。


删除文件myProject\.git\index.lock在我的案例中修复了它。


我也有同样的问题,我意识到:正如@dumbledad所说,为了显示变更集,Visual Studio运行命令

1
git add -u

内部用于临时更新。如果试图添加到变更集中的某些文件是由另一个进程打开的,则git命令将获得权限错误。而且Visual Studio不会显示更改。

在我的例子中,我的repo中有一个文档被另一个应用程序打开,这导致Visual Studio由于git权限错误而不显示修改内容。因此,检查Git存储库中的任何文件是否未被任何其他应用程序打开。


我正在使用vs 2015更新1,也遇到了这个问题。此外,同时,VS的输出窗口告诉我,我的解决方案文件夹下的VC.opendb文件被另一个程序占用。根据这一点,我修正了占领问题:将*.VC.opendb*.VC.db添加到.gitignore文件中。然后一切顺利。


我对Visual Studio更新3也有同样的问题。vs在本地保存,但没有收到任何更改,所以我无法提交。

我从https://git-for-windows.github.io/下载了git for windows(谢谢@fhilton),打开开发者命令提示符,将目录改为c:
eposscheduler(我的源代码的位置)。

然后我运行get add-u并收到以下错误…

error: open("WindowsServices\Scheduler.WindowServices.InstallLog"):
Permission Denied

error: unable to index file
WindowsServices\Scheduler.WindowServices.InstallLog

fatal: updating files failed

正如其他人所说,似乎Visual Studio中的Git工具可以无声地失败,即使是在最基本的Windows级别错误中也是如此。更糟糕的是,它可以告诉你Git是完全同步的。命令行无疑是您目前的朋友。


有用的文章!使用git bash(git-add-u)帮助我更接近问题的原因。提交之前未在Visual Studio中显示的更改后,由于使用了SQL Server数据库项目,只完成了一半的提交;显然,Windows 10开始在同一文件夹中添加JFM文件,使其始终保持打开状态,并阻止VS访问它。解决方案是在提交之前将其添加到.gitignore。

有关详细信息,请参阅此线程:

Visual Studio 2015数据库项目目录包含扩展名为jfm的文件


然后我试图进行更改,但文件不受影响……有一个简单的解决方案。主要问题是您的Git忽略文件忽略文件。

打开本地repo,例如d://repos,然后查找所需的文件

-->d://repos/project1/homeview模型.cs

-->右键单击它,然后单击Git扩展

-->选择+添加文件

enter image description here

-->then force选项

enter image description here

-->单击"添加文件"。现在,您将在更改中添加文件。


我在一台全新安装了VS2013更新5和VS2015的新机器上遇到了这个问题,这让我发疯了。然后我发现如果我安装了Git for Windows,问题就消失了!https://git-for-windows.github.io/