我们最近决定从我们的主项目拆分子项目foo。我们不想包含所有foo,例如所有与foo相关的测试都可以安全地保存在foo /.
中现在,我有两个存储库:
git subtree split
我想用foo / include替换main / include / foo。这可以使用git subtree push -P include/foo/ foo
。问题是这会重写历史记录,我不确定如何将main / include / foo的更改推送到/ foo / include。 ((1024, 1024, 3), dtype('uint8'))
给出了可怕的结果。
任何人都知道该怎么做?
答案 0 :(得分:0)
您应该像使用git subtree split ...
一样进行拆分,但是如果您希望它位于单独的存储库中,请使用git submodule
将其作为在单独存储库下管理的内部存储库。
Submodules
允许将外部存储库嵌入到源树的专用子目录 中,总是指着一个特定的提交。
git submodule
强> 将你的大项目打破到子项目,就像你到目前为止一样 现在使用以下命令将每个子项目添加到主项目中:
git submodule add <url>
将预测添加到您的仓库后,您必须初始化并更新它。
git submodule init
git submodule update
这是子模块的一个例子 - 项目在另一个项目中,每个项目都是一个独立的项目。
git subtree
强> Git子树允许您将任何存储库作为另一个存储库的子目录插入
与submodule
非常相似,但主要区别在于管理代码的位置。在子模块中,内容放在一个单独的仓库中,并在那里进行管理,允许您将其克隆到许多其他仓库。
subtree
正在将内容作为根项目的一部分进行管理,而不是在单独的项目中。
不是写下如何设置它并理解如何使用它,你可以简单地阅读这篇能够解释它的优秀文章。
https://developer.atlassian.com/blog/2015/05/the-power-of-git-subtree/