如何在Visual Studio 2017中使用多个Git仓库

8
我的解决方案涉及三个Git仓库,位于自托管的Bitbucket Server上。一个仓库用于iOS项目,一个仓库用于共享项目类型,例如在其他项目中共享的库(如Android),然后是公司共享仓库,其中包含更多的类库,不特定于项目。
在Visual Studio 2015中,我可以进入“团队资源管理器”并连接到各种存储库,以便查看提交历史记录,并具有从Git提交或拉取的源代码控制访问权限。但是,在Visual Studio 2017中,当我连接到其他存储库时,我会被带回到起始页,离开了我的解决方案。
我如何管理组成一个Visual Studio 2017解决方案的多个存储库?目前,我的唯一选择是使用外部工具,例如Sourcetree

如果所有人在此项目中都需要访问和/或更改所有三个存储库,则一种方法是使用子模块-一个存储库是“主”存储库,并且库作为子模块被拉入(尽管这不是没有特定于子模块的注意事项和工作流问题)。 https://git-scm.com/docs/git-submodule - crashmstr
对于VS2015,您可以从Bitbucket克隆多个仓库到本地,但一次只能使用一个仓库。对于VS2017也是如此。那么在VS2015中管理多个仓库是什么意思呢? - Marina Liu
@chadbo问道:为了帮助我们理解您在考虑多仓库功能时的情况,您能否向我解释一下如何协调这三个仓库中的更改?您是否在仓库中有指定应在其他仓库中使用哪个提交的指针文件?如果没有,那么您是如何保持三个仓库在构建、热修复等方面同步的呢? - jessehouwing
@neal回答:我建议参考Xamarin Studio(Mac),因为他们一直处理这个问题。解决方案/文件浏览器需要能够处理多个存储库。我应该能够检查项目的更改,它知道它属于哪个存储库,该存储库的更改得到处理、呈现等。您在其中操作的任何文件(右键单击)解决方案浏览器都应该知道它属于哪个存储库并处理更改。由于我不使用团队服务,所以我永远不需要进入团队资源管理器。 - jessehouwing
终于在官方的VS RoadMap上支持了这个功能:https://developercommunity.visualstudio.com/idea/521291/vs2019-multiple-git-repositories-to-be-active-at-o.html - McGuireV10
显示剩余3条评论
3个回答

3

团队资源管理器的设计一直是如果包含 Git 存储库被关闭并打开了不同的存储库,则关闭解决方案。如果您在 Visual Studio 2015 中看到了不同的行为,那是无意的。

我们希望在 Team Explorer 中支持同时打开多个 Git 存储库,但该功能尚未添加。

Team Explorer 扩展程序为 Visual Studio 提供 Git 集成。无论您是否使用 VSTS,您仍将在 IDE 中使用 Team Explorer 进行 Git 操作。我完全同意支持单个解决方案的多个存储库会很棒。特性按优先级排序,这个特性目前还没有被构建。


谢谢,我建议参考Xamarin Studio(Mac),因为他们一直处理这个问题。解决方案/文件浏览器需要能够处理多个存储库。我应该能够检查项目的更改,并知道它属于哪个存储库以及该存储库的更改如何处理、呈现等。您在其上操作的任何文件(右键单击)都应该知道它属于哪个存储库并处理更改。由于我不使用团队服务,因此我永远不需要进入团队资源管理器。 - Neal
团队资源管理器扩展为Visual Studio提供了Git集成。无论您是否使用VSTS,您仍将在IDE中使用Team Explorer进行Git操作。我完全同意支持单个解决方案的多个存储库是很好的。但是功能是有优先级的,这个功能还没有被开发出来。 - Chad B

1

0

无论是Visual Studio 2015还是Visual Studio 2017,如果您切换到另一个Git存储库,它们都会关闭解决方案。但是您可以打开三个Visual Studio窗口同时处理这三个git存储库。

假设这三个Git存储库位于D:\Dev\git1D:\Dev\git2D:\Dev\git3,并且Visual Studio(适用于Visual Studio 2015和Visual Studio 2017)连接到D:\Dev\git1

您可以通过在Windows Explorer中打开文件夹D:\Dev\git2,使用相同版本的Visual Studio打开D:\Dev\git2中的.sln文件,然后Visual Studio将在另一个Visual Studio窗口中连接到D:\Dev\git2。您可以以同样的方式连接D:\Dev\git3。然后您会发现打开了三个Visual Studio窗口来连接这三个Git存储库。


问题在于我们将.sln文件保存在一个仓库的单独文件夹中。我想我可以尝试将该解决方案文件夹复制到所有三个仓库中,看看是否有效。 - Neal
2
如果您习惯使用git命令,您也可以使用git subtree add --prefix=git2/ <另一个仓库的URL> master - Marina Liu

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