在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”用于允许合并默认情况下没有公共基础的两个分支,这导致创建现有项目的全新历史,然后由不知情的维护者提取,这允许将不必要的并行历史合并到现有项目中。默认情况下,该命令已被教导不允许这样做,并且在一个罕见的事件中使用了逃生舱口
--allow-unrelated-histories
选项,该事件合并了两个独立开始生命的项目的历史记录。
有关更多信息,请参阅Git release changelog。
您可以使用--allow-unrelated-histories
强制合并发生。
我有同样的问题。问题是远程有什么阻止这个。
我首先创建了一个本地存储库。我添加了一个LICENSE
和README.md
文件到我的本地并承诺。
然后我想要一个远程存储库,所以我在GitHub上创建了一个。在这里,我错误地检查了“使用README初始化此存储库”,这也在远程创建了README.md。
所以现在我跑的时候
git push --set-upstream origin master
我有:
error: failed to push some refs to 'https://github.com/lokeshub/myTODs.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes
(e.g. hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
现在我要克服这个问题
git pull origin master
导致以下错误:
From https://github.com/lokeshub/myTODs
branch master -> FETCH_HEAD
fatal: refusing to merge unrelated histories**
我试过了:
git pull origin master --allow-unrelated-histories
结果:
From https://github.com/lokeshub/myTODs
* branch master -> FETCH_HEAD
Auto-merging README.md
CONFLICT (add/add): Merge conflict in README.md
Automatic merge failed;
fix conflicts and then commit the result.
解:
我删除了远程存储库并创建了一个新的(我认为只删除文件README
可能有效),之后下面的工作:
git remote rm origin
git remote add origin https://github.com/lokeshub/myTODOs.git
git push --set-upstream origin master
这对我有用:
git push origin master --force
我也在努力解决这个问题,但我设法找到了解决方法。
当您遇到上述错误时,只需挑选合并提交然后继续rebase:
git cherry-pick -m 1 1234deadbeef1234deadbeef
git rebase --continue
就我而言,每次尝试时错误都只是fatal: refusing to merge unrelated histories
,尤其是远程添加Git存储库后的第一个pull请求。
使用--allow-unrelated-histories
标志以这种方式处理拉取请求:
git pull origin branchname --allow-unrelated-histories
请尝试以下命令:
git pull origin master --allow-unrelated-histories
这应该可以解决您的问题。
我首先设置本地存储库时遇到此错误。然后我去了GitHub并创建了一个新的存储库。然后我跑了
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 origin branchname --allow-unrelated-histories
例如,
git pull origin master --allow-unrelated-histories
参考:
我有同样的问题。试试这个:
git pull origin master --allow-unrelated-histories
git push origin master
git pull origin <branch> --allow-unrelated-histories
您将被路由到Vim编辑窗口:
git push --set-upstream origin <branch>
试试git pull --rebase development
由于所有其他答案实际上都没有回答这个问题,因此这是一个由this answer在相关问题上启发的解决方案。
所以你得到你的错误做git rebase
:
$ git rebase origin/development
fatal: refusing to merge unrelated histories
Error redoing merge 1234deadbeef1234deadbeef
此错误实际上不会取消rebase,但您现在处于中间位置:
$ git status
interactive rebase in progress; onto 4321beefdead
Last command done (1 command done):
pick 1234deadbeef1234deadbeef test merge commit
所以你现在可以手动完成合并。找出原始合并提交的父提交:
$ git log -1 1234deadbeef1234deadbeef
commit 1234deadbeef1234deadbeef
Merge: 111111111 222222222
Author: Hans Dampf
Date: Wed Jun 6 18:04:35 2018 +0200
test merge commit
找出两个合并父项中的哪一个是合并到当前的那个(可能是第二个,用git log 222222222
验证),然后手动合并,复制原始合并提交的提交消息:
$ git merge --allow-unrelated 222222222 --no-commit
Automatic merge went well; stopped before committing as requested
$ git commit -C 1234deadbeef1234deadbeef
[detached HEAD 909af09ec] test merge commit
Date: Wed Jun 6 18:04:35 2018 +0200
$ git rebase --continue
Successfully rebased and updated refs/heads/test-branch.