在Visual Studio 2013中禁用git

19

我有一个由tfs管理的存储库。 但是在本地,我想通过git进行管理,并将更改推送到tfs。 一旦我在那里创建了git存储库,VS2013 中的团队资源管理器会显示此解决方案仅由git管理。 如果我尝试编辑任何文件,它会抱怨文件只能读取,我无法将其保存为以前的版本。 所以我的问题是是否有办法让Visual Studio 2013完全忘记git,并将其作为tfs存储库进行管理。 我可以从命令行管理git。 或者在进行更改时是否有从tfs repo检出文件的方法?


1
如果您正在使用TFS 2012或更新版本,可以尝试使用本地工作区(而不是服务器工作区),这样文件默认情况下会保持可写状态。然后您就不会收到有关文件为只读的投诉了。 - Jimmy
使用目前未发布的NoGit版本非常容易,详见https://dev59.com/bWEi5IYBdhLWcg3wldBu#33789257。 - Ben Wilde
5个回答

15
这里提出的解决方案对我来说很有效:如何永久禁用Visual Studio 2013中的Git集成? 基本上:
  • 将.git文件夹重命名为_git,如@jessehouwing所说
  • 创建一个名为.git的文本文件,其中只包含一行 "gitdir:/Path/To/_git"
  • 将_git添加到.gitignore
Visual Studio现在只会使用TFS,而git也可以正常工作。

快速提示:.git 文件中的行可以只是 gitdir: _git,因为您刚刚将其从 .git 文件夹重命名。 - Chin
我在Windows中使用了以下命令(不带引号):“echo gitdir: _git >.git”--但由于_git后面有空格,它没有起作用--“echo gitdir: _git>.git”可以正常工作。 - J.Merrill

13

对于你的情况,Git-tf 可能是更好的解决方案,它将基于你的 TFVC 源代码控制文件夹创建一个本地 git 仓库。完成后,你可以直接从命令行将更改推送到 TFVC。由于你已经熟悉命令行,这可能非常适合你。

当同一文件夹中存在 git 仓库时,强制 Visual Studio 保持在 Team Foundation 源代码控制上目前非常困难。


作为可怕的解决方法,关闭你的解决方案,将 .git 文件夹重命名为 _git 并重新加载解决方案。这应该会将 TFVC 返回,但如果没有,请使用 文件->源代码控制->高级->更改源代码控制 将解决方案重新绑定到 TFVC。然后在检入后再次关闭解决方案,将 _git 重命名回 .git 并重新加载。


正如 Ed 在评论中提到的,你可以将你的 .git 文件夹移动到另一个文件夹,像这样:

 \MyProjects
    \GitRoot
     |  \.git
     \MySolution
      \MyFirstProject
      \MySecondProject

这将允许Visual Studio使用TFVC绑定,您可以使用git --git-dir=\MyProjects\GitRoot\.git命令参数告诉git命令行.git目录在其他位置。

您可以设置名为GIT_DIR的环境变量来一次性解决这个问题,如@hlovdal所提到的。


@Eric提到的另一个技巧是创建名为.git的文本文件,并在其中添加以下内容:

gitdir: _git

将 .git 文件夹重命名为 _git,然后确保您将 _git 添加到 .gitignore 中。

提示:要在 Windows Explorer 中创建以 . 开头的文件,可以使用 New/Text Document 选项:

enter image description here

然后将文件命名为 .git.(确保已选中“显示文件扩展名”选项):

enter image description here


确实。您也可以在另一个位置创建.git目录,并使用git --git-dir=...命令指向正确的位置。 - Edward Thomson
1
不必在命令行中添加--git-dir,您可以设置环境变量GIT_DIR(以及GIT_WORK_TREE)。 - hlovdal

12

我建议执行以下步骤:

  1. 进入 Visual Studio 中的 TOOLS Tab
  2. 选择 Options 选项
  3. 在左侧选择 Source Control
  4. Plugin Selection 项目中,将下拉列表中的值输入为 None enter image description here

3
这会禁用TFS集成,而我不想失去它。我想强制使用TFS而非Git。但是在选项中强制后,TFS会导致我的解决方案卸载。一旦我重新加载它,就会再次看到Git源代码控制。任何尝试切换到TFS都会导致我的解决方案被卸载,然后又回到之前的状态。 - AlexanderM
由于您未连接到团队项目,请选择“TEAM”选项卡,输入团队项目的URL和您的凭据。您也可以通过Team Explorer进行操作。 - Aghilas Yakoub
4
还原会卸载解决方案,当你加载解决方案时,它会回到 Git。 - jessehouwing
到目前为止有任何解决方案吗? - GameScripting
1
当我在我的主目录C:\Users\[用户名].git中有一个.git文件夹时,这种情况也发生在我身上。删除git文件夹解决了这个问题。 - adotout

0

这个不起作用 - 请查看更新的帖子(插件在VS 2013更新3后也无法工作):http://blog.markrendle.net/disable-the-git-source-control-add-in-in-vs2013-permanently/ - Jordan
@Martin 是的,根据我的经验,没有什么是有效的。不过好消息是,在卸载resharper并更新到第3版后,我的大部分git性能问题都得到了解决。 - Earlz
我现在只是将git项目保存在单独的工作区中 - 我的问题是我需要使用TFS进行源代码控制,但它一直在捕捉到一个.git,这是因为我在Microsoft培训活动期间下载了一个代码示例... Microsoft Git提供程序非常具有攻击性,而且无法删除... 我真的希望Microsoft能够想出一个解决方案,允许我们禁用它。 - Jordan

0

不好的解决方案:关闭你的解决方案,将.git文件夹重命名为_git,然后重新加载解决方案。感谢jessehouwing。


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