Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在不同的存储库中拆分git存储库以减小大小_Git_Jenkins - Fatal编程技术网

在不同的存储库中拆分git存储库以减小大小

在不同的存储库中拆分git存储库以减小大小,git,jenkins,Git,Jenkins,除了通常的commit/pull/push/branch等命令之外,我对git不是很精通,因此我不知道搜索我想要做的事情所需要的合适的词 我正在寻找关于如何获取我想要的内容和指向URL的指针等方面的建议,以提供更多的解释 随着时间的推移,一个项目已经从一个单一的产品发展为几个用于构建最终产品的子产品。每个子产品都有自己的子目录树,但是构建子产品和最终产品的Jenkins作业仍然会拉入整个存储库,只是为了构建它应该做的一个产品 这需要相当长的构建时间,即使对于那些随着时间变化不大的小产品也是如此。

除了通常的
commit/pull/push/branch
等命令之外,我对git不是很精通,因此我不知道搜索我想要做的事情所需要的合适的词

我正在寻找关于如何获取我想要的内容和指向URL的指针等方面的建议,以提供更多的解释

随着时间的推移,一个项目已经从一个单一的产品发展为几个用于构建最终产品的子产品。每个子产品都有自己的子目录树,但是构建子产品和最终产品的Jenkins作业仍然会拉入整个存储库,只是为了构建它应该做的一个产品

这需要相当长的构建时间,即使对于那些随着时间变化不大的小产品也是如此。因此,我正在考虑将每个项目拆分为自己的存储库。同时,它们对几个文件都遵循类似的模式,所以我想将其转换为所有人都使用的通用代码。这是一个示意图布局

/project
  /subproject1
    /common
    /src
    /test
  /subproject2
    /common
    /src
    /test
  /common # main project
  /src    # main project
  /test   # main project
从我到目前为止所读到的内容来看,我认为最好的做法是将所有子项目和主项目拆分为单独的存储库。保存历史记录会很好,但是提交在过去跨越了多个子项目,并且没有使用分支,因此这可能是不可行的

另外,当我将公共代码移到它自己的存储库中时,如何将文件移回公共目录中,以便将公共代码中的更改推送到它自己的存储库中?我读过关于git子树的
git subtree
,它可以做到这一点,但我从未使用过它

这是前进的最佳途径还是有更简单的选择

随着时间的推移,一个项目已经从一个单一的产品发展为几个用于构建最终产品的子产品。

因此,我正在考虑将每个项目拆分为自己的存储库

您应该创建子模块。

子模块是另一个项目中的独立项目,它在自己的文件夹中自行管理

在您的情况下,因为您已经将代码放在一个大的存储库中,所以您必须将其分解为小块

要执行此操作,请使用此文件夹。在您的情况下,只需清除要更改为子模块的
子文件夹

随着时间的推移,一个项目已经从一个单一的产品发展为几个用于构建最终产品的子产品。

因此,我正在考虑将每个项目拆分为自己的存储库

您应该创建子模块。

子模块是另一个项目中的独立项目,它在自己的文件夹中自行管理

在您的情况下,因为您已经将代码放在一个大的存储库中,所以您必须将其分解为小块

要执行此操作,请使用此文件夹。在您的情况下,只需清除要更改为子模块的
子文件夹


可能重复@J.J.Hakala这个问题很好,但由于它已经存在多年了,我想知道从那时起想法是否发生了变化。另外,我不确定是否应该使用
子树
过滤器分支
,因为我们没有完全遵循任何gitflow(也称为none)。我会读一些关于该走哪条路的建议,其中一个答案是“简单的方法”™" 最近(2013年),@J.J.Hakala谢谢。使用子树的解释有助于根据子目录将存储库拆分为单独的项目。可能重复@J.J.Hakala这个问题很好,但由于它已经存在了几年,我想知道从那时起想法是否发生了变化。此外,我不确定是否应该使用
子树
过滤分支
,因为我们没有完全遵循任何gitflow(也称为none)。我会非常仔细地阅读一些关于如何走的建议。其中一个答案是“简单的方法”™“是最近的(2013年),@J.J.Hakala谢谢。使用子树的解释有助于根据子目录将存储库拆分为单独的项目。谢谢。我不知道BFG。我用它从存储库中删除二进制blob,如Excel电子表格和Word文档,并以这种方式缩小大小。我愿意接受你的答案,b但这并没有解决我所有的问题。@J.J.Hakala也为我指明了正确的方向。我不确定如何正确地将两者都归功于。我已经使用
git子树--prefix[dir]拆分了大型回购-b newbranch
如@J.J.Hakala所指的帖子中所述。从那里,我将每个分支克隆到它自己的存储库中,并使用您的子模块建议将公共回购添加到每个独立回购。如果这里的正确行为需要新的答案来解释,请让我知道。相同的问题,不同的回购。我如何擦洗o部分f包含git历史记录中敏感信息的文件?同样,您也可以使用此方法。谢谢。我不知道BFG。我用它从存储库中删除了Excel电子表格和Word文档等二进制blob,并以这种方式缩小了大小。我想接受您的回答,但它并没有解决我所有的问题。@J.J.Hakala给我指出正确的方向。我不确定什么是正确的方法来给两者评分。我已经使用
git子树--prefix[dir]拆分了大型回购-b newbranch
如@J.J.Hakala所指的帖子中所述。从那里,我将每个分支克隆到它自己的存储库中,并使用您的子模块建议将公共回购添加到每个独立回购。如果这里的正确行为需要新的答案来解释,请让我知道。相同的问题,不同的回购。我如何擦洗o部分包含git历史记录中敏感信息的文件?同样,您也可以使用此方法。