繁体   English   中英

如何在 visual studio 中将项目添加到源代码管理(现有 GIT 远程仓库)?

[英]How to add a project to source control (existing GIT remote repo) in visual studio?

我有一个包含项目(项目 1)的解决方案(解决方案 1)。 该项目已添加到源代码管理中,我正常执行所有 git 操作。 我有另一个具有不同回购协议的项目(项目 2)的解决方案。

我想合并这 2 个解决方案并将它们仅放在 1 个解决方案下。 因此,我在解决方案 1 中右键单击我的解决方案并将现有项目(项目 2)添加到其中。 我的问题是 azure devops 上的 git 回购看不到我将这个项目添加到解决方案中,所以基本上我无法提交或还原或执行任何 git 操作。 我该如何解决? 我需要将此项目添加到源代码管理,但是当我右键单击它时,添加到源代码管理不存在。

提前致谢

将本地 git 回购视为包含父文件夹。 它包括该文件夹或子文件夹中的所有(跟踪)文件。

在您的解决方案中,可以有指向 git 存储库之外的其他文件夹的引用。 事实上,项目/解决方案 2 已经有一个单独的 git 存储库,所以这告诉我它在不同的文件夹中。

您有几种方法可以解决此问题,但首先,您很可能希望从解决方案 1 中删除项目 2。 然后决定如何将项目 2 添加到解决方案 1。



只需将它们分开存储即可!

最简单的回应实际上只是让他们分开回购。 您可以独立更改它们,并在它们自己的存储库中更新它们 - 但是,正如您所注意到的,如果您使用 VS 的本机 git 接口,这可能会出现一些问题 - 我认为您必须在解决方案之间进行交换。

这样做的一大缺点是 git 不会自动跟踪在解决方案 1 的任何给定提交中正在使用项目 2 的哪个版本。 您需要在某处明确指示一个版本(我认为它可能在解决方案配置中的某处?)。 我不会依赖解决方案配置来为您跟踪底层版本控制——最好由 git 直接对其进行可靠跟踪。从版本控制系统的角度来看,其他解决方案更好。



直接把文件夹复制过来

管理项目 2 版本控制的最简单解决方案是将项目 2 文件夹从它自己的文件夹 / git repo 复制到解决方案 1 的文件夹 / git repo 中。首先将其从解决方案中删除,然后复制过来,然后从中读取项目 2新位置。

完成此操作后,您可以将其添加为解决方案 1 中的新项目,所有指向它的链接都将指向此本地副本。

但是,缺点是现在解决方案 1/项目 2 和其单独回购中的原始项目 2 是不同的。 如果此时项目 2 仅用于解决方案 1,那可能没问题。



使项目 2 成为子模块

稍微复杂一点的解决方案是使项目 2 的回购成为解决方案 1 的回购的子模块。这会将它添加为解决方案 1 文件夹层次结构中的一个文件夹,所以它看起来就像之前的解决方案,但有一点额外努力了解如何更新子模块。

基本上,在此设置下,添加了单独的 git 回购协议,并引用了该回购协议中的正确提交,以便在任何给定时间使用。 您可以完全单独更新 repo 2,或者可以直接在子模块中更改它,进行新的提交等,但它们是单独的 repos,git 始终跟踪正在使用哪个版本的 repo 2(哪个提交) ,所以版本控制是自动的。

上次我使用 Visual Studio 时,我不相信它的原生 git 接口支持子模块。 我不确定现在是否如此。 您可能需要了解如何在命令行或使用单独的可视化 GUI Git 工具(例如GitExtensions) (仅在 Windows 上,适用于 v3+)来管理它们。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM