在git存储库中管理导入的子树 tl,dr版本:

在git存储库中管理导入的子树 tl,dr版本:,git,repository,gitlab,code-organization,git-subtree,Git,Repository,Gitlab,Code Organization,Git Subtree,通过“git subtree add”添加到repo中的代码在该(服务器端)repo中显示得像是作为常规文件添加的一样,这是意料之中的吗?文件显示的是副本还是(如所希望的)只是参考 完整版本: 我对git非常陌生(以前过度使用SVN和Performance,但在我的新工作中,我们现在使用gitlab),最近决定将我当前软件项目存储库中的部分代码转移到一个单独的repo中,因为这在结构上似乎更有意义。 确切地说,我通过“子树拆分”从当前项目中剥离了一个文件夹“Infrastructure”(我们称

通过“git subtree add”添加到repo中的代码在该(服务器端)repo中显示得像是作为常规文件添加的一样,这是意料之中的吗?文件显示的是副本还是(如所希望的)只是参考

完整版本: 我对git非常陌生(以前过度使用SVN和Performance,但在我的新工作中,我们现在使用gitlab),最近决定将我当前软件项目存储库中的部分代码转移到一个单独的repo中,因为这在结构上似乎更有意义。 确切地说,我通过“子树拆分”从当前项目中剥离了一个文件夹“Infrastructure”(我们称之为“DynamicDisplays”)

我遵循这些指南

据我所知

我从“DynamicDisplays”GitLab项目(服务器端存储库的扩展版本)中删除并重新添加了该文件夹。我对git的术语还不太熟悉

如教程中所述

我现在确实有一个单独的项目(“基础设施”)用于我想要拆分的回购,我确实看到了关于在“DynamicDisplays”GitLab项目中删除拆分代码的承诺

但是“DynamicDisplays”GitLab项目似乎仍然包含这些内容(“Infrastructure”子文件夹中的所有内容),至少项目的文件/文件夹结构视图仍然显示了这些内容)

GitLab项目显示了一个提交“Merge commit'018973f3'as'Infrastructure'”,这是我在“subtree add”中做的。这是否重新介绍了内容(而不是“只是一个参考”)

在本地文件浏览器中,我也看不到区分子树内容和“本机”存储库内容的方法(在我的例子中,是资源管理器,因为我现在使用的是Windows 8.1)

应该是这样吗?我是否只看到了引用的内容,所有内容都按预期工作?你知道一种检查的方法吗?也许可以将其可视化(因为它可能会对项目的未来用户产生影响)

不幸的是,这里也没有人知道git,介绍git的那个人后来又离开了(在我加入之前),在那之前,他们根本没有使用任何RCS(大多数人现在仍然没有)。所以这里没有我可以问的人

编辑:

经过更多的实验(并提交并推送到“基础设施”存储库),我在包含子树的repo中没有注意到主“基础设施”repo中的文件已更改。这是我追求的一部分

有人知道我如何引用另一份这样的回购协议吗?我是否必须使用子模块(或者它们也不能提供子模块)


我选择subtree是因为有很多建议使用subtree来代替submodule,以便于管理,但我目前不认为它比复制代码有任何优势……这真是太遗憾了,我敢肯定,我只是错过了一些东西。

将你的问题分解,以增加获得答案的机会answers@rfabbri不知何故,如果你简单地问这些问题,人们会因为你没有包括所有细节和代码示例等而责问你,如果你试图把这些都塞进,根本没有人会回答:把你的问题翻出来,以增加获得成功的机会answers@rfabbri不知何故,如果你简单地问问题,你就做不好,人们会因为你没有包括每一个细节和代码样本等而责问你,如果你试图把这些都塞进,根本没有人会回答:P
git subtree add --prefix=Infrastructure Infrastructure master