【问题标题】:git subtree: add different branches from a project at different prefixesgit subtree:从项目中以不同的前缀添加不同的分支
【发布时间】:2013-06-12 15:13:48
【问题描述】:

我有一个 module 存储库,其中包含一些分支 branchAbranchB 等。我想将这些分支导入到一个 项目中 使用 git 子树的存储库。我像这样设置我的 project 存储库:

git remote add module /path/to/module.git
git fetch module
git subtree add -P folderA module/branchA
git subtree add -P folderB module/branchB

这似乎按预期工作,并且我从 folderAfolderB 中的正确分支获得了文件和历史记录。

现在我在 modulemaster 分支中进行了更改,我将其应用于 branchAbranchB (通过变基 branchAbranchB)并且想要更新 project

git fetch module

将这些更改提取到 project。但是,当我这样做时

git subtree pull -P folderA module branchA
git subtree pull -P folderB module branchB

只有 folderA 得到更新。对于 folderB,我收到以下消息:

From /path/to/module.git
 * branch            branchB -> FETCH_HEAD
Already up-to-date.

并且更改不会合并。显然,git 没有正确考虑到更改已应用于路径 folderA,而不是 folderB。有谁知道我可以做些什么来使这个场景起作用?

【问题讨论】:

    标签: git-subtree


    【解决方案1】:

    回复我自己:

    似乎该解决方案被隐藏在 github repository for git-subtree (outdated) 对 git-subtree 的原始贡献的文档中的某个地方。在那里,它显示

    添加、合并、推送、拉取的选项

    --壁球::

    此选项仅对添加、合并、推送和拉取有效 命令。

    ...

    使用“--squash”也有助于避免出现相同问题 子项目多次包含在同一个中 项目,或被删除然后重新添加。在这样一个 案例,结合历史是没有意义的 无论如何,因为不清楚历史的哪一部分 属于哪个子树。

    --squash 添加到git subtree 命令会将正确的历史记录拉入正确的位置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-17
      • 2021-03-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多