git 子树错误 "fatal: refusing to merge unrelated histories"
git subtree error "fatal: refusing to merge unrelated histories"
我想弄清楚 '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 中的错误,已在 https://github.com/git/git/commit/0f12c7d4d175bb0566208213b1b340b6794f305c
中修复
我为此苦苦挣扎了一段时间,认为我找到了解决方案。
我是 git 的新手,所以如果我使用了错误的名称,请原谅我。
问题可能出在您使用 --squash
选项时 运行 git 子树添加命令。
尝试删除子树(删除远程存储库并删除所有本地文件、提交和推送)。然后在没有 --squash
选项的情况下重做子树添加。
然后我跳转到我的子树存储库,进行了一些更改、提交和推送,然后跳回到我的主超级项目存储库并进行了 git 子树拉取。它给了我一些关于有修改的工作树的错误。为了解决这个问题,我做了一个 git checkout master,然后是一个 git push,然后再次尝试了 subtree pull。成功了。
希望对您有所帮助。
如果子树是使用--squash
添加的,拉取时也需要使用--squash
git subtree pull --prefix=<folder-goes-here> <remote-goes-here> <branch-goes-here> --squash
我不是专家
但我发现了一些东西。我最初只是尝试正常拉动。
但是我找到了这个特定的子树拉。
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/
)
对我有用的是使用 git merge
和子树策略:
git merge -s subtree -Xsubtree="$prefix" subremote/branch --allow-unrelated-histories
git subtree
使用了类似于引擎盖下的东西。
我想弄清楚 '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 中的错误,已在 https://github.com/git/git/commit/0f12c7d4d175bb0566208213b1b340b6794f305c
中修复我为此苦苦挣扎了一段时间,认为我找到了解决方案。
我是 git 的新手,所以如果我使用了错误的名称,请原谅我。
问题可能出在您使用 --squash
选项时 运行 git 子树添加命令。
尝试删除子树(删除远程存储库并删除所有本地文件、提交和推送)。然后在没有 --squash
选项的情况下重做子树添加。
然后我跳转到我的子树存储库,进行了一些更改、提交和推送,然后跳回到我的主超级项目存储库并进行了 git 子树拉取。它给了我一些关于有修改的工作树的错误。为了解决这个问题,我做了一个 git checkout master,然后是一个 git push,然后再次尝试了 subtree pull。成功了。
希望对您有所帮助。
如果子树是使用--squash
添加的,拉取时也需要使用--squash
git subtree pull --prefix=<folder-goes-here> <remote-goes-here> <branch-goes-here> --squash
我不是专家
但我发现了一些东西。我最初只是尝试正常拉动。 但是我找到了这个特定的子树拉。
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/
)
对我有用的是使用 git merge
和子树策略:
git merge -s subtree -Xsubtree="$prefix" subremote/branch --allow-unrelated-histories
git subtree
使用了类似于引擎盖下的东西。