【问题标题】:How can you disable Git integration in Visual Studio 2013 permanently?如何永久禁用 Visual Studio 2013 中的 Git 集成?
【发布时间】:2014-02-04 16:01:54
【问题描述】:

我知道您可以使用“工具/选项”对话框禁用 git 集成,但我注意到此设置似乎不会跨会话持续存在;即,一旦关闭并重新打开解决方案,Git 集成就会再次启用。我猜 Visual Studio 在我的解决方案文件系统树中看到了 .git 文件夹。

在启用 Git 插件时,有多种 Visual Studio 2013 插件行为不正确,我更喜欢在命令行中管理我的源代码管理,并且我在一些非常大的项目中工作,其中 Git 集成在打开和使用解决方案时会显着减慢。我想永远关闭它,因为我根本不使用它或不需要它。这可能吗?

【问题讨论】:

  • 可能有用:为了修复它,我禁用了扩展,然后使用更改源代码控制命令“绑定”功能更改了源代码控制 - 查看更多信息:thereprogram.com/2013/04/18/visual-studio-tools-for-git/…
  • 这就是诀窍 - 在 Visual Studio 2013 中,Git 集成不是作为扩展提供的,而是直接集成的。无法禁用扩展,因为没有可禁用的扩展。嘘!
  • 也许你可以自动化它?
  • 我可以,但是我将使用什么触发器来执行自动化?加载时触发的扩展程序?编写扩展来禁用 OOB 功能感觉很奇怪。
  • 我的团队也有这个问题。我认为我们使用的技巧是加载解决方案,禁用 git 集成,然后重新启动 VS。您也可以尝试安装 SP 1。

标签: git visual-studio-2013


【解决方案1】:

正如你所说,你可以禁用源代码管理插件:

  • 工具/选项
  • 选中“显示所有设置”
  • 源代码控制/插件选择
  • 将“当前源代码控制插件”设置为“无”

然后,正如 Ade Miller 所说:重新启动 Visual Studio。

自从启用了 git 插件后,我的 Visual Studio 工作得非常缓慢,我设法按照这些步骤“在会话中持久地”禁用它。

希望对您有所帮助。

【讨论】:

  • 我发现VS只是在重新打开解决方案时重新启用了GIT。此外,下面提到的 NoGit 扩展也不起作用。嗯。
  • 我也有同样的问题。 VS 只是在 VS 重新启动时重新启用 GIT 集成。请注意,我现在已经按照上面的描述禁用了它几十次。 (它不断回来)
  • 它也为我重新启用了它。显然有人写了一个扩展,在启动时禁用它。疯狂的! stackoverflow.com/questions/22459959/…。此链接中的另一个 hack 是删除所有人对提供程序 dll 的权限:C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer\Microsoft.TeamFoundation.Git.Provider。 dll
  • 我发现打开团队资源管理器窗口为我重新启用了它。所以我只是关闭了那个窗口并将选项转回无。希望 VS 不会再尝试在这方面“帮助”我。
  • 没有加载任何解决方案,我将源代码管理插件设置从 Git 改回无。然后我重新启动了 Visual Studio(仍然没有解决方案)并检查了设置,它现在是 Visual Studio Team Foundation Server。我再次设置回None,再次重启VS,这次好像卡住了。
【解决方案2】:

我在使用 Visual Studio 2015 时遇到了同样的问题,甚至不允许安装 NoGit 扩展。我使用“在启动时打开最后一个解决方案”选项,所以我认为这可能与问题有关。

所以我只是关闭了我的解决方案,然后转到“工具 - 选项 - 源代码管理”,然后将其关闭,重新启动 VS,然后 - 瞧,SC 保持关闭状态!希望在其他解决方案中也能如此。

【讨论】:

  • 这一千倍。没有注册表黑客,没有自定义扩展,这行得通。谢谢!
  • 我不得不将它与另一件事结合起来:我更新了我的 VisualStudio 开始菜单快捷方式以包含这个命令行标志:/ResetSettings "C:\Users\myuserid\Documents\Visual Studio 2015\Settings\CurrentSettings.vssettings"。根据命令行参考,此设置“恢复 IDE 的默认设置,可选择重置为指定的 VSSettings 文件”。这似乎可以确保始终应用我想要的设置。
  • 谢谢!这对我有用。另一个注意事项 - 在您执行此操作之前,请务必关闭右侧(解决方案资源管理器旁边)的 Team Viewer 选项卡,否则如果您单击它,它将自动重新启用。
  • 确保你杀死逃跑的 devenv.exe 进程,该进程在 VS 崩溃后仍然存在,至少有一个 CPU 被固定,否则你可以一遍又一遍地执行此操作,它不会粘住。但是当它这样做并且不需要注册表黑客时很高兴!
  • 这不是也杀死了 TFS 集成吗?也就是说,我认为最初的目标是关闭 only git。我在这里错过了什么?
【解决方案3】:

对我来说,使用以下命令创建存储库可以解决问题:

git init --separate-git-dir _git

由于它没有创建.git目录,只有一个.git文件指向真正的仓库目录,例如:

gitdir: C:/tfs/ProjectName/Main/_git

Visual Studio(至少到 VS2015 Update 3,这是我使用的)没有注意到它!

这比环境变量的东西效果更好,因为 Git Extensions(我正在使用)在支持它时遇到问题,但完美地处理了指向 _git 文件夹的 .git 文件。

【讨论】:

  • 同意,我也不想弄乱环境变量的东西。这很好用。
  • 很棒的解决方法!感谢上帝 VS2013 没有实现读取这个 .git "filesystem-agnostic Git symbolic link to the repository",否则我们会发现同样的问题。
  • 这确实是整个答案链中存在的最简单的解决方案。
  • 非常感谢您的提示!由于 `NoGit' Visual Studio 扩展不适用于 VS 2017,这是我从“git-monitoring”中阻止 VS 2017 的唯一方法 :-) 谢谢! ?
  • @Marc.2377 他们是否也在 VS2017 中添加了对检测 .git file 的支持?在不久的将来(当我获得笔记本和 VS 升级时)这对我来说将是个坏消息。到目前为止,我仍在使用 VS2015,这对我来说非常有效。
【解决方案4】:

每次加载 IDE 时在 VS2015 中重新启用 git SCC 的一个原因是 CodeLens。 工具/选项/文本编辑器/所有语言/CodeLens 涉及 TFVS 和 Git 的各种活动都有一个复选框 - 如果它认为您正在处理 git repo,选中任何这些 git 复选框将自动启用 Git 插件。

【讨论】:

  • 工作(对我来说)答案不建议从源代码管理中删除解决方案或损坏 VS 安装。
  • 这是正确的解决方案。
  • 这非常重要,因为我看到 Visual Studio 2017 覆盖了禁用源代码控制的琐碎事情。但似乎即使在那之后 VS 2017 也会创建一个.vs 文件夹。
  • 这似乎是提供的最直接、永久、干净的解决方案 - 这应该是公认的答案,它也适用于 VS 2019
  • 要使这是一个完整的解决方案,您可能会包括在禁用 CodeLens 后实际禁用 Git 插件的第二步。
【解决方案5】:

对于 Visual Studio 2015,我发现 CodeLens 在重新启动后重新启用了 Git 源代码控制插件。禁用 CodeLens 解决了这个问题。

【讨论】:

  • 这对于在 Visual Studio 2017 中禁用 GIT 很重要。很好!
【解决方案6】:

NoGit Visual Studio extension 处理此行为。

奖励:很棒的描述。

【讨论】:

  • 不幸的是,它不再适用于 VS2013 SP3
  • 我正在使用 VS 2013 Update 4,它对我来说仍然可以正常工作。
  • 我将 git 集成与 codelens 中显示的 git 信息混淆了......感谢您的澄清!
  • 也不支持2015
  • hmemcpy 版本似乎已经不存在了,但原来的扩展现在支持 VS 2017。不幸的是,它似乎很难支持 VS2019:github.com/markrendle/nogit/issues/8
【解决方案7】:

腰疼了一个星期,不知道怎么在 VS2015 中启动这个源代码控制服务。但要知道如何阻止它。这是将 git/任何源代码控制与 VS2019 解耦的步骤。

进入VS-->Tools-->Options-->Source Control-->[Current Source Control Plug-in]

您可以在系统中获得所有可能的源代码控制和无选项。 如果您选择无,则一切就绪。 选择 None 选项后,我的问题得到了修复,点击确定并重新启动 VS,不再进行源代码控制。

【讨论】:

    【解决方案8】:

    这在 Visual Studio 2013 和 2015 中对我有用。即使您关闭并重新打开 Visual Studio,它仍然存在。

    1. 打开解决方案

    2. 转到工具 -> 选项 -> 源代码管理 -> 将插件设置为无

    3. 关闭 Visual Studio 并以管理权限执行以下命令。

    移动“C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer\Microsoft.TeamFoundation.Git.Provider.dll”“C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer\Microsoft.TeamFoundation.Git.Provider.dll.bak"

    【讨论】:

    • VS 2015 更新 1:MSFT TFS 提供程序在此之后不起作用
    • ... 或者您可以像@John Brett 建议的那样禁用 CodeLens。
    【解决方案9】:

    (更新:基于我对 GIT_DIR 和 GIT_WORK_TREE 的更深入了解,此答案现在提供了一个完全可行的解决方案)

    总结:Git 足够灵活,您可以将.git 目录移动到工作目录之外的位置,其中文件从 tfs 签出。这样就可以进行 100% 干净的 tfs 签出,而没有任何 Visual Studio 能够检测到的 git 痕迹,同时仍然能够将其作为 git 存储库进行操作。关键是将 git dir(git 存储库存储)和工作树(您签出的源代码)分开。

    假设您的源代码已在c:\work\someproject\tfscode 中签出,并且您已经在那里运行了git init,例如visual studio 检测到c:\work\someproject\tfscode\.git 目录,这会导致问题。

    为了让生活更美好,请执行以下操作:

    $ cd /cygdrive/c/work/someproject
    $ mv tfscode/.git tfscode.git
    $ echo export GIT_DIR=/cygdrive/c/work/someproject/tfscode.git >> env.sh
    $ echo export GIT_WORK_TREE=/cygdrive/c/work/someproject/tfscode >> env.sh
    $ source env.sh
    $ cd tfscode
    $ git status
    ...
    $
    

    这对于视觉工作室来说非常有效,因为它完全不知道存储在 git 中的任何内容。

    【讨论】:

    • 顺便说一句,git-tf naturaly 不喜欢 cygwin 路径,所以如果你打算使用 git tf,请使用 GIT_...=c:/work/...
    • 这很好,但我还是使用 c:/work/... 样式路径而不是 \c\work\.. 样式。
    【解决方案10】:

    从 Visual Studio 2015 中删除 Microsoft GitProvider

    链接: http://researchaholic.com/2015/02/02/remove-the-microsoft-gitprovider-from-visual-studio-2013/

    1. 确保 Visual Studio 已关闭
    2. 打开注册表
    3. 导航到 HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\14.0_Config\SourceControlProviders
    4. 删除11b8e6d7-c08b-4385-b321-321078cdd1f8 在详细信息窗格中,它应该显示 GitProvider
    5. 打开 Visual Studio

    【讨论】:

    • 改进此答案 - 应用以下 reg 文件 Windows 注册表编辑器版本 5.00 [-HKEY_CURRENT_USER\SOFTWARE\Microsoft\VisualStudio\14.0_Config\SourceControlProviders\{11b8e6d7-c08b-4385-b321-321078cdd1f8}]
    【解决方案11】:

    我设法通过删除所有这些注册表项来禁用内置的 Visual Studio Git 提供程序:

    7FE30A77-37F9-4CF2-83DD-96B207028E1B

    11b8e6d7-c08b-4385-b321-321078cdd1f8

    【讨论】:

    • 这对我有用!谢谢!但是还有一个问题:如果最终我要更新 VS(进行次要或主要更新),我是否必须再次删除密钥?
    【解决方案12】:

    【讨论】:

    • 要安装,我更喜欢手动将 .vsix 扩展名更改为 .zip,这样您就可以右键单击并解压缩文件。然后您所要做的就是将新提取的文件夹放入您的用户应用数据文件夹 (%appdata%\Local\Microsoft\VisualStudio\{version}\Extensions)。然后重启Visual Studio,打开Tools->Extensions and Updates...,然后找到“NoGit”并启用它,然后再次重启。
    • Bad news for VS2019: "我很抱歉,但我试图让它在 VS2019 上运行,它实际上关闭了解决方案。" 这个答案看起来也像this one的骗子?
    【解决方案13】:

    您需要关闭所有 VS 解决方案。启动一项,设置Menu\tools\options\Source Control\Git-->None,出现提示时关闭此解决方案。 现在,当打开任何其他解决方案时,选项保持“无”。

    【讨论】:

      【解决方案14】:

      我在 Visual Studio 中也遇到了 Git 问题,但我想我终于找到了一个可行的解决方案。到目前为止,我一直使用将 .git 文件夹重命名为 _git 并添加一个名为 .git 的文本文件,其中包含“gitdir: _git”行。但是自从升级到 VS2019 之后就不行了。

      我尝试了许多不同的解决方案,但都没有奏效,因为我需要 Git 用于某些项目而不是其他项目。我的问题项目是使用我公司的 Team Foundation Server 进行源代码控制。但是由于我在 TFS 进行的错误合并中丢失了代码,所以我在更新或提交到 TFS 之前将我的更改提交到本地 Git 存储库。

      D:\Projects\TFS\.gitVS 不应该使用的本地 git repo。

      D:\Projects\TFS\ProjectA\$tf VS 应该用于 ProjectA 的 TFS 文件。

      无论我如何尝试,当它在父文件夹中找到一个 .git 文件夹时,我都无法让 VS 为 ProjectA 使用 TFS。我的解决方案是将 .git 文件夹移动到:

      D:\Projects\TFS-GIT\.git

      并创建到 ProjectA 文件夹的目录连接。启动提升的命令提示符并运行:

      mklink /J D:\Projects\TFS-GIT\ProjectA D:\Projects\TFS\ProjectA

      在 Visual Studio 中打开 D:\Projects\TFS\ProjectA\ProjectA.sln,它不会找到任何 .git 文件夹,并且会正常连接到 TFS。

      D:\Projects\TFS-GIT 运行 git 命令将使用与 Visual Studio 相同的文件,但 .git 文件夹也可用。 TortoiseGit 在这个文件夹中也可以正常工作。

      【讨论】:

        【解决方案15】:

        VS2015 在空闲时占用了我 50% 的 CPU。我了解到禁用 Git 是解决方案。不幸的是,禁用 Git 只是为了学习它会自动重新启用它。

        在我的情况下,我实际上想使用 Git,但不想使用 50% 的 cpu 使用率。

        由于 NoGit 解决方案仅适用于 VS2013,您可以改为下载: Git Source Control Provider 即使你不使用 Git。我的 CPU 使用率现在是 2.2%,而不是空闲时的 50%。

        【讨论】:

          【解决方案16】:

          我很难找到解决方案,经过多次尝试后才成功,所以我不能准确。 使用 GitHub Desktop 在另一个文件夹中创建另一个本地存储库。 完成此操作,在不加载项目的情况下打开 Visual Studio,现在 Team Explorer 应该显示两个存储库。 选择新的存储库,因为你应该做一些操作,在这个桥上你可以“删除”你的旧存储库,因为新的存储库是“活动的”。 完成此操作后,我从前一个文件夹中删除了 .hidden .git* 文件。 现在打开项目不会导致旧存储库再次重新创建。 希望这会有所帮助。

          【讨论】:

            【解决方案17】:

            这个 git 扩展会减慢 IDE 中的一切(在我的例子中是 2015 年)。我必须删除整个 TeamFoundation 文件夹才能摆脱它。缺点是您将无法在 Visual Studio 2015 中使用 Git 和 TeamFoundation。注意:将此文件夹备份到别处并在需要时恢复。

            要删除文件夹,我这样做了。

            我这样做的原因是,VS 2015 会为 TeamFoundation 扩展生成随机文件夹名称,因此我的文件夹名称可能与您的不同。

            【讨论】:

              【解决方案18】:

              工具、选项、源代码管理、插件选择、无

              【讨论】:

              • Visual Studio 2013 不会保留此更改。下次打开解决方案时,如果检测到 .git 目录,它将自动重新选择 Git 插件。如果解决方案已经绑定到 TFVC,它甚至会这样做。
              【解决方案19】:

              1) 关闭解决方案和视觉工作室。 2)转到解决方案的目录并删除隐藏的git目录和2个git文本文件。 3)再次打开视觉工作室。 4) 转到工具-> 选项和源代码控制。 5)选择无。 6)重新启动视觉工作室。 7)打开你的解决方案。 8)再次转到工具->选项和源代码控制,然后选择TFS。 9)在解决方案中右键单击以选择将源代码控制添加到解决方案。 10)选择tfs。

              【讨论】:

              • 他们不想要 TFS,他们当然也不想删除 .git 文件夹,因为它会清除整个本地提交历史。他们要求的是如何防止 VS 使用 .git 文件夹中的信息,而不是如何清除该文件夹。
              【解决方案20】:

              将 Tools\Options\Source Control 设置回 TFS。 关闭 Visual Studio 2015。 打开源代码的根文件夹。 删除名为“.git”的文件夹。 重启。

              【讨论】:

              • 这听起来像是您要求操作从 git 中完全删除文件夹。 “我更喜欢在命令行管理我的源代码管理”似乎表明这不是他的解决方案。
              猜你喜欢
              • 2013-12-04
              • 2015-09-18
              • 2016-03-02
              • 1970-01-01
              • 1970-01-01
              • 2018-10-21
              • 1970-01-01
              • 2017-12-07
              • 1970-01-01
              相关资源
              最近更新 更多