包含git存储库的目录到自己的全部功能

时间:2017-01-14 13:00:27

标签: git git-subtree

我们最近决定从我们的主项目拆分子项目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'))给出了可怕的结果。

任何人都知道该怎么做?

1 个答案:

答案 0 :(得分:0)

您应该像使用git subtree split ...一样进行拆分,但是如果您希望它位于单独的存储库中,请使用git submodule将其作为在单独存储库下管理的内部存储库。

  

Submodules 允许将外部存储库嵌入到源树的专用子目录 中,总是指着一个特定的提交。

git submodule

将你的大项目打破到子项目,就像你到目前为止一样 现在使用以下命令将每个子项目添加到主项目中:

git submodule add <url>

将预测添加到您的仓库后,您必须初始化并更新它。

git submodule init
git submodule update

这是子模块的一个例子 - 项目在另一个项目中,每个项目都是一个独立的项目。

enter image description here

git subtree

Git子树允许您将任何存储库作为另一个存储库的子目录插入

submodule非常相似,但主要区别在于管理代码的位置。在子模块中,内容放在一个单独的仓库中,并在那里进行管理,允许您将其克隆到许多其他仓库。

subtree 正在将内容作为根项目的一部分进行管理,而不是在单独的项目中。

不是写下如何设置它并理解如何使用它,你可以简单地阅读这篇能够解释它的优秀文章。

https://developer.atlassian.com/blog/2015/05/the-power-of-git-subtree/