gpt4 book ai didi

git - 撤消git中的子模块化?

转载 作者:太空狗 更新时间:2023-10-29 13:39:21 25 4
gpt4 key购买 nike

我们的小团队认为,如果我们的项目 A 的库(X、Y、Z)被分成 git 子模块,那将是一个很酷的主意。我们几乎没有意识到这会带来多大的痛苦,尤其是因为项目仍处于早期阶段并且还没有很好地隔离。我认为项目负责人通过 git filter-branch 命令创建了子目录子模块(我不能问他 b/c 他正在度假)。

我们能否以某种方式撤消此操作,并将子模块中的提交拖回到主项目中?

“痛苦”的例子:

  • 项目 A 必须通过“git://”链接而不是“ssh://”指向 X、Y、Z,如果我们希望用户能够在没有 ssh 访问的情况下检查它,所以我们不能如果我们希望能够推送,则通过 A/X 副本直接更改为 X——我们必须单独克隆它、提交、推送,然后从 A/X 副本中 pull 。
  • 此外,TortoiseGit 和其他 Windows 工具似乎不理解子模块,或者至少它们没有像单纯的克隆那样使其变得透明,所以现在我们正在用愚蠢的脚本和 Hook 将东西拼凑在一起。
  • 哦,是的——对于 X、Y 或 Z 中的每个更改,我们都必须在主项目中添加“子模块已更新”提交。我猜想子模块适用于由不同团队维护的更成熟的项目。

最佳答案

我不一定建议将此作为一个行动方案,ⁱ 但我已经编写了一个脚本 (unsubmodule.py),该脚本应删除每个子模块,然后将其 merge 为同名的子目录,从而保留历史记录每个子模块的提交版本:

https://gist.github.com/763439

我没有测试太多,所以请小心,例如最初只在新克隆上尝试。该脚本不会尝试保留子模块中的任何主题分支,仅保留 super 模块中提交的版本。

ⁱ(这既是因为 Jonathan Leffler 在他的评论中提到的原因,也是因为我从事的几个项目都使用子模块而没有出现重大问题。)

关于git - 撤消git中的子模块化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4542729/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com