git子树错误“;致命:拒绝合并不相关的历史记录”;
我试图弄清楚“git子树”是如何工作的。我一直遵循所有方向,但在尝试将子树项目合并到我自己的repo(“步骤2”)中时,我总是会出错:git子树错误“;致命:拒绝合并不相关的历史记录”;,git,git-subtree,Git,Git Subtree,我试图弄清楚“git子树”是如何工作的。我一直遵循所有方向,但在尝试将子树项目合并到我自己的repo(“步骤2”)中时,我总是会出错:fatal:拒绝合并无关的历史记录 我已经读过了,当我使用--allow unrelated history选项时,它似乎工作得很好。但是,我不确定是否应该使用此选项……我的印象是,子树的全部要点是在一个存储库中具有不相关的历史记录,因此必须添加此选项感觉很奇怪。我应该加上它,还是我做错了什么 我在osx 10.11.6上使用git v2.9.3这是git中的一个
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的解决方案可以避免删除子树并在没有子树的情况下将其添加回去。谢谢!这是我的问题,因为我显然是从另一个项目复制了这个文件夹