在子模块更新时,不要获取非子模块文件

时间:2016-11-10 22:39:38

标签: git

我对如何添加并最终克隆我添加到子模块中的文件感到有些困惑。

我有一个私有的git repo,里面有一个指向公共github repo的子模块。在这个repo中,我添加了一个新文件并提交它。我回到主私人项目回购并提交并推动变更。一切都没有问题合并。注意,我不想将这个新文件推送到公共github。我只想在私人仓库中使用它。

这是问题的起点。 假设用户克隆了回购。然后执行子模块初始化。之后,子模块更新失败。它失败了,因为它试图下载我从公共github站点添加的新文件的提交ID。该文件不在该公共仓库上(我也不希望它在那里),它只在私人仓库中。

有没有办法告诉git只下载公共回购中出现的最新提交?也许我正在提交和推动变更的方式是问题?

让我使用子模块的原因是我还希望与github项目“重新同步”。

这甚至是git中子模块的有效用例吗?

2 个答案:

答案 0 :(得分:0)

我在想如果你想将自己的文件添加到子模块中,那么你应该把它分叉。如果公共仓库生活在GitHub上,这是一个非常简单的程序。

所以你创建你的fork,在那里推送提交,然后将子模块指向这个URL。

答案 1 :(得分:0)

看起来我找到了答案。子模块不是要走的路。我要做的事情(似乎对我有用)就是设置一个指向这些公共github存储库的遥控器。签出一个分支,然后使用子树合并策略将这些分支合并到我的私有仓库中。

如果我需要与公共git repo重新同步,我会检查分支,执行git pull,并将其合并到我的私人仓库的分支中。

这里描述: https://git-scm.com/book/en/v1/Git-Tools-Subtree-Merging