【问题标题】:git subtree error "fatal: refusing to merge unrelated histories"git子树错误“致命:拒绝合并不相关的历史”
【发布时间】:2017-01-09 21:38:31
【问题描述】:

我试图弄清楚“git subtree”是如何工作的。我已经按照this page 上的所有指示进行操作,但在尝试将子树项目合并到我自己的存储库中时总是出错(“步骤 2”):fatal: refusing to merge unrelated histories

我读过this post,当我使用--allow-unrelated-histories 选项时,它似乎工作正常。但是,我不确定是否应该使用它...我的印象是子树的全部意义在于在一个存储库中具有不相关的历史记录,因此必须添加该选项感觉很奇怪。我还是应该添加它,还是我做错了什么?

我在 osx 10.11.6 上使用 git v2.9.3

【问题讨论】:

  • 正如那篇帖子所说,错误本身在 Git 2.9 版中是新的。旧版本的 Git 合并了不相关的历史,没有任何抱怨(并且没有任何合理的合并基础,尽管这对于不相关的子树来说很好)。子树脚本依赖于旧行为。
  • 在我看来--allow-unrelated-historiesgit merge 的参数而不是git subtree,因为它不在git-subtree(1) 中,而是在git-merge(1)
  • 我遇到了同样的问题。 --allow-unrelated-histories 对我来说似乎也错了,但我想它必须这样做。

标签: git git-subtree


【解决方案1】:

如果子树是使用--squash添加的,拉取时还需要使用--squash

git subtree pull --prefix=<folder-goes-here> <remote-goes-here> <branch-goes-here> --squash

【讨论】:

  • 谢谢!这是我的问题,因为我显然从另一个项目中复制了该文件夹
【解决方案2】:

我已经为此苦苦挣扎了一段时间,并认为我找到了解决方案。

我对 git 很陌生,如果我使用了错误的名称,请原谅我。

问题可能来自您在运行 git subtree add 命令时使用--squash 选项。

尝试删除子树(删除远程存储库并删除所有本地文件、提交和推送)。然后重做不带--squash 选项的子树添加。

然后我跳转到我的子树存储库,进行了一些更改,提交并推送,然后跳回到我的主超级项目存储库并执行 git subtree pull。它给了我一些关于工作树有修改的错误。为了解决这个问题,我做了一个 git checkout master,然后是一个 git push,然后再次尝试 subtree pull。它奏效了。

希望对您有所帮助。

【讨论】:

  • Squash 在检索大型 repo 时是一个有用的选项。使用@PencilBow 的解决方案可以避免删除子树并在没有子树的情况下将其添加回来。
【解决方案3】:

对我有用的是使用 git merge 和子树策略:

git merge -s subtree -Xsubtree="$prefix" subremote/branch --allow-unrelated-histories

git subtree 使用类似于引擎盖下的东西。

【讨论】:

    【解决方案4】:

    【讨论】:

    • 这最终变成了什么git版本?
    • 那个特定的提交落在 git v2.9.3 和 AFAICT 不是解决 OP 问题的方法。它会影响--rejoin 的行为,它只适用于subtree split 命令。
    【解决方案5】:

    我不是专家。

    但我发现了一些东西。我最初只是尝试正常的拉动。 但我发现了这个特定的子树拉。

    git subtree pull --prefix myPrefixname https://github.com/subTreeRepo.git master --squash
    

    master 当然是分支名称

    (来自

    https://developer.atlassian.com/blog/2015/05/the-power-of-git-subtree/

    )

    【讨论】:

      猜你喜欢
      • 2020-10-03
      • 2017-02-23
      • 2017-09-02
      • 2018-10-11
      • 2017-12-29
      • 2016-10-22
      • 2020-08-28
      • 2018-11-06
      • 2023-03-28
      相关资源
      最近更新 更多