在 git rebase origin/development 期间,从git显示以下错误消息:
git rebase origin/development
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 强制合并发生 .
--allow-unrelated-histories
就我而言,在远程添加git repo之后,每个特别是第一次拉取请求的错误只是 fatal: refusing to merge unrelated histories .
fatal: refusing to merge unrelated histories
使用 --allow-unrelated-histories flag以这种方式处理pull请求:
git pull origin branchname --allow-unrelated-histories
请尝试以下命令
git pull origin master --allow-unrelated-histories
这应该可以解决你的问题 .
我首先设置本地存储库时遇到此错误 . 然后去了github并创建了一个新的存储库 . 然后我跑了
git remote add origin <repository url>
当我尝试推/拉时,我得到了相同的 fatal: unrelated_histories 错误 . 以下是我修复它的方法:
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 master --allow-unrelated-histories git push origin master
试试 git pull --rebase development
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 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.
我也很努力,但设法找到了解决方法 .
当你遇到上面的错误时,只需选择合并提交,然后继续使用rebase:
git cherry-pick -m 1 1234deadbeef1234deadbeef git rebase --continue
为此,请输入以下命令: -
例如: - git pull origin master --allow-unrelated-histories
参考: - Github unrelated histories issue
9 回答
自git 2.9以来,默认行为已更改:
有关更多信息,请参见git release changelog .
您可以使用
--allow-unrelated-histories
强制合并发生 .就我而言,在远程添加git repo之后,每个特别是第一次拉取请求的错误只是
fatal: refusing to merge unrelated histories
.使用
--allow-unrelated-histories
flag以这种方式处理pull请求:git pull origin branchname --allow-unrelated-histories
请尝试以下命令
git pull origin master --allow-unrelated-histories
这应该可以解决你的问题 .
我首先设置本地存储库时遇到此错误 . 然后去了github并创建了一个新的存储库 . 然后我跑了
当我尝试推/拉时,我得到了相同的
fatal: unrelated_histories
错误 . 以下是我修复它的方法:我有同样的问题 . 试试这个:
试试
git pull --rebase development
由于所有其他答案实际上都没有回答这个问题,因此这是一个在相关问题上受到this answer启发的解决方案 .
所以你得到你的错误做git rebase:
此错误实际上不会取消rebase,但您现在处于中间位置:
所以你现在可以手动完成合并 . 找出原始合并提交的父提交:
找出两个合并父项中的哪一个是合并到当前的那个(可能是第二个,用
git log 222222222
验证),然后手动完成合并,复制原始合并提交的提交消息:我也很努力,但设法找到了解决方法 .
当你遇到上面的错误时,只需选择合并提交,然后继续使用rebase:
为此,请输入以下命令: -
例如: - git pull origin master --allow-unrelated-histories
参考: - Github unrelated histories issue