git子树错误“致命:拒绝合并不相关的历史”

问题描述 投票:7回答:4

我想弄清楚'git subtree'是如何工作的。我在this page上遵循了所有方向,但我总是在尝试将子树项目合并到我自己的回购中时遇到错误('Step 2'):fatal: refusing to merge unrelated histories

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

我在osx 10.11.6上使用git v2.9.3

git git-subtree
4个回答

9
投票

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

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


2
投票

我一直在努力解决这个问题,并认为我找到了解决方案。

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

当您运行git subtree add命令时,可能是因为您使用--squash选项。

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

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

希望有所帮助。


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/

)

© www.soinside.com 2019 - 2024. All rights reserved.