git子树错误"致命:拒绝合并不相关的历史记录"

时间:2016-09-01 21:23:24

标签: git git-subtree

我试图找出&gtt子树的方式'作品。我已经按照this page的所有说明进行了操作,但是在尝试将子树项目合并到我自己的回购中时,我总是遇到错误('步骤2'):fatal: refusing to merge unrelated histories

我已阅读this post,当我使用--allow-unrelated-histories选项时,它似乎工作正常。但是,我不确定是否应该使用它......我的印象是,子树的重点是在一个存储库中有不相关的历史记录,所以必须添加选项会感到奇怪。我应该添加它,还是我做错了什么?

我在osx 10.11.6上使用git v2.9.3

5 个答案:

答案 0 :(得分:8)

如果使用--squash添加了子树,则在拉动时还需要使用--squash

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

答案 1 :(得分:3)

答案 2 :(得分:2)

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

我对git很新,所以请原谅我,如果我使用错误的名字。

运行git subtree add命令时,使用--squash选项可能会出现此问题。

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

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

希望有所帮助。

答案 3 :(得分:1)

对我有用的是将 git merge 与子树策略结合使用:

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

git subtree 在幕后使用类似的东西。

答案 4 :(得分:0)

我不是专家。

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

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/