Visual Studio TFS Git没有看到任何更改

时间:2015-02-11 12:46:10

标签: visual-studio-2013 tfs

我没有得到关于Visual Studio的TIT Git的信息。

我在GFS上克隆了一个同事的TFS解决方案并开始添加代码。然后我意识到我需要自己的分支来进行更改,所以按照Push a new local branch to a remote Git repo and track it too中的说明运行

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通过运行命令

注意到了我的所有修改
git status

并且看到很多更改没有为提交和未跟踪文件暂存。

git status cmd

Git book处可以使用

git add

或更具体地说

git add -u .

将文件准备好进行提交,但我不愿意这样做,因为Develop your app in a Git repository (track, commit) Visual Studio文档声明:

  问:Git舞台在哪里?
  答:如果您是经验丰富的Git用户,您可能已经注意到了这一点   Visual Studio处理更改的方式与命令提示符不同。   您可能想知道“包含的更改”部分是否包含   你的上演变化。实际上,Visual Studio通常会绕过Git   适合你的舞台。当您同时提交更改时,Visual Studio   阶段并提交它们。添加a时会发生一个例外   文件到你的Git存储库; Visual Studio确实可以使用这种方式   变化

Visual Studio同时进行并提交更改。但为什么我没有将我对跟踪文件所做的任何修改列为更改,从而让我提交它们?

11 个答案:

答案 0 :(得分:52)

这更像是一种解决方法,而不是解释,但我发现如果我忽略了the documentation"当您提交更改时,Visual Studio会同时进行分段并提交它们"而是使用命令

将修改添加到暂存
git add -u .

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

从那时起,Visual Studio正在做我期望的事情:当我对文件进行更改时,文件在提交窗口中列为已更改。

我仍然不知道为什么Visual Studio在初始git add之后才能获取更改,但至少它现在可以正常工作。

答案 1 :(得分:15)

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

[path to project]/node_modules/

显然VS2015在那里的一条很长的路上崩溃了,只是决定放弃所有的希望

答案 2 :(得分:5)

我有同样的探索,我意识到以下几点: 为了显示变更集,正如@dumbledad所说,Visual Studio运行命令

git add -u 

内部用于暂存更新。 如果您尝试添加到更改集的某些文件是由另一个进程打开的,则git命令会收到权限错误。 Visual Studio不会显示更改。

在我的情况下,我的repo中有一个文档被另一个应用程序打开,导致Visual Studio因Git权限错误而无法显示修改。因此,请检查您的git存储库的任何文件是否未被任何其他应用程序打开。

答案 3 :(得分:5)

删除文件myProject\.git\index.lock修复了我的情况。

答案 4 :(得分:3)

我使用VS 2015 Update 1并且也遇到了这个问题。而且,与此同时,VS'输出窗口告诉我解决方案文件夹下的private Recycle_Adapter adapter; adapter.SetOnItemClickListener(new Recycle_FrameAdapter.OnItemClickListener() { @Override public void onItemClick(View view, int position) { if(position == 1){ tv_module.setText(""); } else if{ } continue up to last } }); 文件被另一个程序占用。根据{{​​3}},我修复了占用问题:将VC.opendb*.VC.opendb添加到*.VC.db文件中。一切顺利。

答案 5 :(得分:1)

我在Visual Studio Update 3中遇到了同样的问题.VS在本地保存,但没有接收任何更改,因此我无法提交。

我从https://git-for-windows.github.io/下载了Git for Windows(感谢@fhilton),打开了Developer Command Prompt并将目录更改为C:\ Repos \ Scheduler(源代码的位置)。

然后我跑了GET ADD -U并收到以下错误......

  

错误:打开(“WindowsServices \ Scheduler.WindowServices.InstallLog”):   权限被拒绝

     

错误:无法索引文件   WindowsServices \ Scheduler.WindowServices.InstallLog

     

致命:更新文件失败

正如其他人所说,看起来Visual Studio中的GIT工具可能会无声地失败,即使对于最基本的Windows级错误也是如此。更糟糕的是,它可以告诉你GIT是完全同步的。命令行肯定是你的朋友。

答案 6 :(得分:0)

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

答案 7 :(得分:0)

然后我试图进行更改,但文件没有受到影响......有一个简单的解决方案。主要问题是忽略文件的git忽略文件之一..

打开您的本地仓库,例如D:// repos,然后查看您想要的文件

- > d://repos/project1/HomeViewModel.cs

- >右键单击它并单击Git Extentions

- >选择+添加文件

enter image description here

- >然后强制选项

enter image description here

- >点击添加文件。如果你去,你的文件将被添加到更改中

答案 8 :(得分:0)

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

有关更多信息,请参见此线程:

Visual Studio 2015 Database Project directory contains a file with extension jfm

答案 9 :(得分:0)

打开“视图”>“输出”,在“显示输出来源”中选择“源代码控制-Git”,并检查是否有任何错误。正如其他人提到的那样,Git中的任何错误都使MS Project默默地忽略任何更改。

答案 10 :(得分:0)

在我的情况下,我的问题是我在Linux的项目路径中使用了带有符号链接的Linux(无法确定带有符号链接的Windows是否存在相同的问题)