【问题标题】:Visual Studio TFS Git not seeing any changesVisual Studio TFS Git 没有看到任何变化
【发布时间】:2015-04-11 20:20:12
【问题描述】:

我不了解 Visual Studio 的 Git for TFS。

我在 TFS 上的 Git 中克隆了一位同事的解决方案并开始添加代码。然后我意识到我需要自己的分支来进行所做的更改,因此按照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 会在代码文件旁显示熟悉的红色勾号图标,以向我保证更改已触发文件被检出:

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

但是当我查看修改文件的历史时,没有!

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

Visual Studio 根本看不到任何变化:

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

git status

并看到许多未针对提交和未跟踪文件暂存的更改。

我可以使用Git book

git add

或者更具体的

git add -u .

准备提交的文件,但我不愿意这样做,因为 Develop your app in a Git repository (track, commit) Visual Studio 文档指出:

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

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

【问题讨论】:

  • 请注意,我故意没有标记此 git,因为它似乎是 TFS 和 Visual Studio 的 Git 工作流所特有的。
  • 文件是否位于 Team Explorer - Changes / Untracked files 下?
  • 在 Visual Studio "15" 预览版中,它现在确实使用了 git 的阶段。
  • 原因可能是之前提交不成功,解决方案资源管理器中的所有文件都变为“已提交”。我的问题原因是在 SQL Server 数据库项目中添加了 jmf 文件(见下文)。

标签: visual-studio-2013 tfs


【解决方案1】:

这更像是一种解决方法而不是解释,但我发现如果我忽略了the documentation“当您提交更改时,Visual Studio 同时暂存并提交它们”,而是使用命令将修改添加到暂存

git add -u .

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

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

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

【讨论】:

    【解决方案2】:

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

    [path to project]/node_modules/
    

    显然 VS2015 在其中一条很长的路上崩溃了,并决定放弃所有希望

    【讨论】:

    • 同意。我刚刚在一个角度项目中遇到了这个问题。 VS 在 node_modules 和 bower_components 路径上窒息并且默默地失败了。
    • 我遇到了类似的问题,因为我的主目录位于远程服务器上。我有一个共享驱动器 (X:) 到同一位置,并且能够以 Git 工作的方式打开 VS。
    【解决方案3】:

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

    【讨论】:

    • 这在 VS 2017 中对我有用,出现问题是因为 VS 2017 在取消暂存某些文件时崩溃了,这些文件必须在 .git 文件夹中留下了 index.lock 文件,这实际上告诉了任何想要与它已经在使用的存储库进行交互的程序。
    • 这里也一样。删除了 myProject\.git\index 文件。然后从分支中删除更改(否则所有文件都标记为已更改)。它有效。
    • 就是这样。我删除了 index.lock 文件,然后砰!我现在可以看到我的更改了。
    【解决方案4】:

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

    git add -u 
    

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

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

    【讨论】:

      【解决方案5】:

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

      【讨论】:

        【解决方案6】:

        我在使用 Visual Studio Update 3 时遇到了同样的问题。VS 在本地保存但没有获取任何更改,因此我无法提交。

        我从https://git-for-windows.github.io/(感谢@fhilton)下载了适用于 Windows 的 Git,打开了开发人员命令提示符并将目录更改为 C:\Repos\Scheduler(我的源代码的位置)。

        然后我运行 GET ADD -U 并收到以下错误...

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

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

        致命:更新文件失败

        正如其他人所说,Visual Studio 中的 GIT 工具似乎可以静默失败,即使是最基本的 Windows 级别错误也是如此。更糟糕的是,它可以告诉你 GIT 完全同步。命令行当然是你暂时的朋友。

        【讨论】:

          【解决方案7】:

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

          【讨论】:

            【解决方案8】:

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

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

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

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

            --> 选择+添加文件

            --> 然后是强制选项

            --> 点击 Addfiles..Here you go 你的文件将被添加到更改中

            【讨论】:

              【解决方案9】:

              有用的文章!使用 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

              【讨论】:

              • .gitignore *.jfm *.dbmdl
              【解决方案10】:

              打开视图 > 输出,在 Show Output from 中选择“Source Control - Git”并检查是否有任何错误。正如其他人所提到的,Git 中的任何错误都会使 MS Project 默默地忽略任何更改。

              【讨论】:

                【解决方案11】:

                在我的情况下,我的问题是我在项目路径中使用带有符号链接的 Linux(无法判断带有符号链接的窗口是否有同样的问题)

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 2014-05-13
                  • 1970-01-01
                  • 2021-08-13
                  • 2019-12-31
                  • 2017-07-31
                  • 2016-05-03
                  • 1970-01-01
                  • 2016-09-09
                  相关资源
                  最近更新 更多