gpt4 book ai didi

git:如何从项目中分离出库?过滤器分支,子树?

转载 作者:IT王子 更新时间:2023-10-29 01:13:45 26 4
gpt4 key购买 nike

所以,我有一个更大的(闭源)项目,并且在这个项目的上下文中创建了一个库,我认为它在其他地方也很有用。

我现在想在它自己的项目中分离出这个库,它可以在 github 或类似的地方作为开源。当然,图书馆(及其历史)不应包含我们项目的痕迹。

git-subtree 似乎是这里的解决方案,但它并不完全适合。

我的目录布局是这样的(因为它是一个 Java 项目):

  • 击剑游戏 (git workdir)
    • 来源
        • 击剑游戏
          • 交通 (我的图书馆)
            • 协议(protocol) (库的一部分)
            • fencing (与库交互的主要项目的一部分)
            • 客户端 (与库交互的主要项目的一部分)
            • 服务器 (与库交互的主要项目的一部分)
          • 客户(主要项目的一部分)
          • 服务器(主要项目的一部分)
          • ... (主要项目的一部分)
    • 其他文件和目录(构建系统、网站等 - 主项目的一部分)

拆分后,我希望库的目录布局如下所示(包括直接位于粗体目录中的所有文件):

  • 我的图书馆(名称待定)
    • 来源
        • 击剑游戏
          • 交通 (我的图书馆)
            • 协议(protocol) (库的一部分)

历史还应该只包含主项目历史中涉及存储库这一部分的部分。

第一眼看到我 git-subtree split --prefix=src/de/fencing_ame/transport , 但这将

  1. 给我一棵 Root 于transport的树(不会编译)和
  2. 包括transport/client , transport/servertransport/fencing目录。

第一点可以通过使用 git subtree add --prefix=src/de/fencing_ame/transport <commit> 来缓解在接收方,但我认为 git-subtree 不能对导出这些子目录做很多事情。 (真正的想法是能够在这里分享完整的树)。

我必须使用 git filter-branch 吗?在这里?

拆分后,我希望能够使用 git-subtree 或 git-submodule 在我的主项目中导入库,在一个单独的子目录中,而不是现在的位置。我想象这样的布局

  • 击剑游戏 (git workdir)
    • 来源
        • 击剑游戏
          • 运输(空)
            • fencing (与库交互的主要项目的一部分)
            • 客户端 (与库交互的主要项目的一部分)
            • 服务器 (与库交互的主要项目的一部分)
          • 客户(主要项目的一部分)
          • 服务器(主要项目的一部分)
          • ... (主要项目的一部分)
    • 我的图书馆
      • 来源
          • 击剑游戏
            • 交通 (我的图书馆)
              • 协议(protocol) (库的一部分)
    • 其他文件和目录(构建系统、网站等 - 主项目的一部分)
最轻松的方法是什么?除了 git-subtree 和 git-filter-branch 之外,还有其他工具可以实现这个目标吗?

最佳答案

我认为你有一些真正的洞穴探险要做。如果你只想拆分“协议(protocol)”,你可以用“git subtree split ...”或“git filter-branch ...”来做到这一点

git filter-branch --subdirectory-filter
击剑游戏/src/de/fencing_game/transport/protocol -- --all

但是,如果您在传输以及传输/协议(protocol)中都有文件,那就开始变得毛茸茸了。

我编写了一些自定义工具来为我正在进行的项目执行此操作。它们没有在任何地方发布,但你可以用 reposurgeon 做类似的事情.

关于git:如何从项目中分离出库?过滤器分支,子树?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6403715/

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