Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
git子树错误“;致命:拒绝合并不相关的历史记录”;_Git_Git Subtree - Fatal编程技术网

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

git子树错误“;致命:拒绝合并不相关的历史记录”;,git,git-subtree,Git,Git Subtree,我试图弄清楚“git子树”是如何工作的。我一直遵循所有方向,但在尝试将子树项目合并到我自己的repo(“步骤2”)中时,我总是会出错:fatal:拒绝合并无关的历史记录 我已经读过了,当我使用--allow unrelated history选项时,它似乎工作得很好。但是,我不确定是否应该使用此选项……我的印象是,子树的全部要点是在一个存储库中具有不相关的历史记录,因此必须添加此选项感觉很奇怪。我应该加上它,还是我做错了什么 我在osx 10.11.6上使用git v2.9.3这是git中的一个

我试图弄清楚“git子树”是如何工作的。我一直遵循所有方向,但在尝试将子树项目合并到我自己的repo(“步骤2”)中时,我总是会出错:
fatal:拒绝合并无关的历史记录

我已经读过了,当我使用
--allow unrelated history
选项时,它似乎工作得很好。但是,我不确定是否应该使用此选项……我的印象是,子树的全部要点是在一个存储库中具有不相关的历史记录,因此必须添加此选项感觉很奇怪。我应该加上它,还是我做错了什么


我在osx 10.11.6上使用git v2.9.3这是git中的一个bug,在


另请参见:

我已经为此奋斗了一段时间,并认为我找到了解决方案

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

问题可能是在运行git subtree add命令时使用了
--squash
选项

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

然后,我跳转到我的子树存储库,做了一些更改,提交并推送,然后跳回我的主超级项目存储库,并进行git子树拉取。它给了我一些关于工作树修改的错误。为了解决这个问题,我做了一个git签出主控,然后是git推,然后再次尝试了子树拉。成功了


希望有帮助。

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

git子树pull--prefix=--squash
我不是专家

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

git subtree pull --prefix myPrefixname https://github.com/subTreeRepo.git master --squash
其中master是分支机构的名称

(来自


)对我有效的方法是使用带有子树策略的
git merge

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

git子树
使用了与引擎盖下类似的东西。

正如那篇文章所说,错误本身在git版本2.9中是新出现的。较旧版本的Git毫无怨言地合并了不相关的历史记录(并且没有任何合理的合并基础,尽管这对于不相关的子树来说很好)。子树脚本依赖于旧的行为。在我看来,
--允许不相关的历史记录
git merge
的一个参数,而不是
git子树
,因为它在
git子树(1)
中找不到,但在
git merge(1)
中我遇到了同样的问题<代码>--允许不相关的历史记录对我来说似乎也是错误的,但我想它必须这样做。这最终是什么git版本的呢?特定的提交在git v2.9.3中,AFAICT不是OP问题的解决方案。它影响
--rejoin
的行为,该行为仅适用于
子树拆分
命令。在检索大型回购时,挤压是一个有用的选项。使用@PencilBow的解决方案可以避免删除子树并在没有子树的情况下将其添加回去。谢谢!这是我的问题,因为我显然是从另一个项目复制了这个文件夹