这些功能的可用性似乎与 Git 存储库的 origin 远程相关。 origin 必须设置为 TFS 服务器。
当您从其他位置克隆时,该位置默认为origin。同样,如果您从 TFS 克隆了一个存储库,但随后将 origin 更改为不同的服务器(即使您将 TFS 服务器保持为不同命名的远程服务器),您在 Visual Studio 中就会失去这些功能。
您需要使用 git 命令行工具来解决此问题,因为目前没有用于管理遥控器的 Visual Studio GUI。
如果您从镜像中克隆,则恢复功能包括以下内容:
git remote rename origin mirror
git remote add origin <TFS Clone URL>
通过重命名origin 远程,现有分支的跟踪得到适当更新,因此这些分支上的推/拉将针对mirror 发生
您可以从现有克隆(在存储库中运行 git remote -v)或从 Team Foundation Server Web 门户获取 <TFS Clone URL>。在 Web Portal 中有一个“克隆”按钮,可在“代码”/“探索”下弹出所需的 URL。它通常采用http://<server>:<port>/tfs/<collection>/_git/<project> 的形式。
如果您从 TFS 克隆,但希望将不同的远程(镜像)作为推/拉的默认值:
git remote add mirror <Clone URL for mirror>
git branch --set-upstream-to=mirror/master master
这会将镜像添加为名为@987654332@ 的新远程。然后它使master 分支轨道mirror/master 而不是origin/master 这将导致Visual Studio 在您单击Visual Studio 中的推或拉时使用mirror。
您需要对想要推送/拉到镜像而不是 TFS 服务器的每个其他现有本地分支重复上述最后一行。
注意:这仍然存在限制,如果您通过 Visual Studio 发布分支,它将上游设置为 origin,因此您必须使用命令行将上游重置为 @987654338 @。但是,您可以在不发布分支的情况下,在“未同步提交”选项卡上“推送”到 mirror。这至少使它可行,但不幸的是与通常发布分支的方式不一致。如果任何远程是 TFS 服务器,希望较新版本的 TFS 可以让这些额外功能工作,或者提供一个选项来选择将新分支发布到哪个远程。