Git拒绝合并无关的历史

git rebase origin/development以下错误消息显示从git:

 fatal: refusing to merge unrelated histories Error redoing merge 1234deadbeef1234deadbeef 

我的git版本是2.9.0。 用于在以前的版本中正常工作。

我怎么能继续这个rebase允许与新版本中引入强制标志无关的历史?

从git 2.9开始,默认的行为已经改变了:

“git merge”用于合并两个分支,这两个分支默认没有共同的基础,这就导致了一个新创build的现有项目的历史,然后被一个不知情的维护者拉下来,从而允许将不必要的并行历史合并到现有项目中。 该命令被教导不允许这个默认情况下 ,与逃生孵化--allow-unrelated-histories 允许 --allow-unrelated-histories选项被用于一个罕见的事件,合并两个项目,独立开始他们的生活的历史。

有关更多信息,请参阅git发行版更改日志 。

您可以使用--allow-unrelated-histories来强制合并发生。

在我的情况下,错误只是fatal: refusing to merge unrelated histories在远程添加一个git repo后, fatal: refusing to merge unrelated histories在每个特别的第一个请求中fatal: refusing to merge unrelated histories

使用--allow-unrelated-histories标志以这种方式使用pull请求:

git pull origin branchname --allow-unrelated-histories

我第一次设置本地存储库时出现此错误。 然后去github并创build一个新的存储库。 然后我跑了

 git remote add origin <repository url> 

当我试图推/拉,我得到了同样的fatal: unrelated_histories错误。 这是我如何解决它:

 git pull origin master --allow-unrelated-histories git merge origin origin/master ... add and commit here... git push origin master 

试试git pull --rebase development

如果您尝试在github上将一些代码推送到您的远程存储库,那么当您拉动远程存储库时,会发生您遇到的情况。

这只是因为megering您的本地存储库和远程存储库默认情况下是不允许的。

你可以试着写git pull origin master --allow-unrelated-histories来解决这个问题。希望能帮到你!

我也为此付出了努力,但设法find了解决办法。

当你遇到上面的错误只是樱桃挑选合并提交,然后继续rebase:

 git cherry-pick -m 1 1234deadbeef1234deadbeef git rebase --continue 

有一件事我想在这里添加,当我得到同样的错误时,我试图将旧的回购的提交推到新创build的回购。 我解决了它。 如果新的回购有任何文件名称与旧的,那么你会得到我的错误。 我在这两个README.md中都有一个名为README.md文件。 这是我在运行git pull --rebase development时遇到的错误

 . . . Using index info to reconstruct a base tree... Falling back to patching base and 3-way merge... Auto-merging README.md CONFLICT (add/add): Merge conflict in README.md error: Failed to merge in the changes. Patch failed at 0020 added readme The copy of the patch that failed is found in: .git/rebase-apply/patch When you have resolved this problem, run "git rebase --continue". If you prefer to skip this patch, run "git rebase --skip" instead. To check out the original branch and stop rebasing, run "git rebase --abort". 

在完成了合并冲突并做出改变之后,当我运行这个git rebase --continue ,我得到:

 Applying: added readme No changes - did you forget to use 'git add'? If there is nothing left to stage, chances are that something else already introduced the same changes; you might want to skip this patch. When you have resolved this problem, run "git rebase --continue". If you prefer to skip this patch, run "git rebase --skip" instead. To check out the original branch and stop rebasing, run "git rebase --abort". 

然后我运行git rebase --skip向前移动,再次遇到README.md合并冲突的README.md 。 对于每次我承诺的README.md我得到这个错误,每次我不得不手动删除冲突,提交更改,然后运行, git rebase --continuegit rebase --skip 。 因为,在我的情况下, README.md没有那么多的更新,我解决了这个问题。 一个快速的workaroud本来是要重新命名所有的新回购的名称文件到别的东西,然后运行git pull --rebase development