在Visual Studio 2013中使用本地Git和(远程)TFS

J.M*_*ill 7 git tfs visual-studio visual-studio-2013

我开始在本地处理一些代码并使用Gi​​t(Git Gui和命令行)来管理它.我现在被要求将项目放入TFS"at corporate".我可以使用VPN连接远程访问TFS.

对于VS,代码是具有多个项目的单个解决方案.我使用VS成功地将解决方案添加到TFS,它似乎找到所有项目并将其.csproj文件和所有代码添加到TFS源代码控制.

后来,当没有连接到TFS(VPN off)时,我做了一个简单的更改并将其提交到我的本地Git存储库.我只有挫折试图(连接到VPN并尝试将更改提交到TFS).

我启动Visual Studio.有一个"团队资源管理器 - 主页"选项卡显示"主页|离线".我检查工具/选项/源代码控制,TFS是当前版本控制提供程序.

我单击团队资源管理器工具栏上的"插件"图标; 它会记住连接,现在显示"Connect | Offline"; 下面是一个包含"选择团队项目..."链接的行,以及两个在每个部分旁边都有向下三角形的部分.一个具有TFS服务器名称(后跟(1)); 在那之下是(仅)"团队项目"的名称,其中存储在TFS中.另一部分有"Local Git Repositories(1)",并显示解决方案的名称,并在其旁边显示解决方案目录的路径.标签标题为"团队资源管理器 - 连接".我双击团队项目的名称,选项卡标题更改为"团队资源管理器 - 主页",屏幕显示"主页| {teamProjName}"和两个部分.一个人有"项目","Web门户"和通常的" 待更改","源控制资源管理器",以下等图标部分;以及另一部分"解决方案",其中包含"工作空间:{workspaceName} | 新... | "打开..."; 下面是单个解决方案文件.我双击解决方案名称,现在屏幕显示"Home | solutionName(Local)"; 解决方案部分现在有"Branch:master"(Git的证据)和工具/选项/源控件说它已更改为Microsoft Git Provider.如果我将其更改回TFS,它会显示"Home | Offline",我必须再次点击"插件"图标 - 我就回到我开始的地方,除了它说"Connect | {solutionName}(Local) )" 解决方案"有一条线"工作区:{workspaceName} | 新... | "打开..."; 下面是单个解决方案文件.我双击解决方案名称,现在屏幕显示"Home | solutionName(Local)"; 解决方案部分现在有"Branch:master"(Git的证据)和工具/选项/源控件说它已更改为Microsoft Git Provider.如果我将其更改回TFS,它会显示"Home | Offline",我必须再次点击"插件"图标 - 我就回到我开始的地方,除了它说"Connect | {solutionName}(Local) )" 解决方案"有一条线"工作区:{workspaceName} | 新... | "打开..."; 下面是单个解决方案文件.我双击解决方案名称,现在屏幕显示"Home | solutionName(Local)"; 解决方案部分现在有"Branch:master"(Git的证据)和工具/选项/源控件说它已更改为Microsoft Git Provider.如果我将其更改回TFS,它会显示"Home | Offline",我必须再次点击"插件"图标 - 我就回到我开始的地方,除了它说"Connect | {solutionName}(Local) )" 解决方案部分现在有"Branch:master"(Git的证据)和工具/选项/源控件说它已更改为Microsoft Git Provider.如果我将其更改回TFS,它会显示"Home | Offline",我必须再次点击"插件"图标 - 我就回到我开始的地方,除了它说"Connect | {solutionName}(Local) )" 解决方案部分现在有"Branch:master"(Git的证据)和工具/选项/源控件说它已更改为Microsoft Git Provider.如果我将其更改回TFS,它会显示"Home | Offline",我必须再次点击"插件"图标 - 我就回到我开始的地方,除了它说"Connect | {solutionName}(Local) )"

首先打开解决方案并没有帮助; 当我连接到TFS时,解决方案将被关闭.关闭和打开VS只是从"VS了解TFS,但你处于脱机状态"模式开始,打开TFS活动的解决方案使其在(Local)模式下切换到Git提供程序.

我非常接近使用注册表黑客来禁用Microsoft Git提供程序 - 我使用Git Gui和命令行完成了我的Git工作; VS没有参与.

我疯了吗?我本以为"使用Git本地开发,连接到TFS以与其他人同步"是VS的主流用例.

任何援助将不胜感激.谢谢.

bla*_*ond 8

如果.git文件夹用作git存储库的存储,Visual Studio只能看到git存储库.因此,我们可以通过为git商店使用不同的文件夹来伪造VS.

  • 将当前.git文件夹重命名为_git(.gitdir可能隐藏)
  • 创建调用同一文件夹中的文本文件.git只包含线gitdir: _git(请通过命令行的文件:echo gitdir: _git>.git)
  • 添加_git到您的.gitignore文件中

现在,当您启动VS时,它将不会看到该git存储库,而是将使用TFS.

  • 我尝试了很多方法让 VS2019 使用 TFS,即使父文件夹中有一个 .git 文件夹,最后找到了一个合理的解决方案:/sf/answers/4316108541/ (2认同)

MrH*_*ood 3

如果服务器配置为 TFVC 并且您有本地 Git 存储库,那么您不能只从本地推送到 tfs。你有两个选择。你可以:

1) 您可以创建一个为 Git 配置的新团队项目并正常推送。

2)您可以使用 TF-Git 从本地 git 存储库推送到 TFVC 服务器:http://www.microsoft.com/en-gb/download/details.aspx ?id=30474

  • 我并不是想“从本地 Git 推送到 TFS”。我只是尝试使用服务器端 TFS 版本控制,而不需要 VS 不断进入离线模式,因为我有一个本地 Git 存储库。我非常愿意在处理事情时向本地 Git 进行提交,与向 TFS 提交“已完成的工作”分开。我只是不明白为什么本地 Git 存储库的存在会让 VS 不断忽略与 TFS 的连接。 (2认同)