Git refusing to merge unrelated histories on rebase
在
1 2 | fatal: refusing to merge unrelated histories Error redoing merge 1234deadbeef1234deadbeef |
我的Git版本是2.9.0。以前的版本很好用。
我如何继续这个重新平衡允许与新版本中引入的强制标志无关的历史?
自git 2.9以来,默认行为已更改:
"git merge" used to allow merging two branches that have no common
base by default, which led to a brand new history of an existing
project created and then get pulled by an unsuspecting maintainer,
which allowed an unnecessary parallel history merged into the
existing project. The command has been taught not to allow this by
default, with an escape hatch--allow-unrelated-histories option
to be used in a rare event that merges histories of two projects
that started their lives independently.
有关详细信息,请参阅git版本更改日志。
您可以使用
在我的例子中,在远程添加git repo之后,每个特别是第一个pull请求的错误仅仅是
使用
尝试以下命令
这应该能解决你的问题。
当我首先设置本地存储库时,出现了这个错误。然后转到Github并创建了一个新的存储库。然后我跑了
1 | git remote add origin <repository url> |
当我试图推/拉时,我得到了相同的
1 2 3 4 | git pull origin master --allow-unrelated-histories git merge origin origin/master ... add and commit here... git push origin master |
为此,输入命令:
1 | git pull origin branchname --allow-unrelated-histories |
例如。:
1 | git pull origin master --allow-unrelated-histories |
参考文献:
Github无关历史问题
我也有同样的问题。试试这个:
1 2 3 | git pull origin master --allow-unrelated-histories git push origin master |
试试
由于所有其他答案实际上都没有回答这个问题,下面是一个由这个答案启发的有关问题的解决方案。
因此,执行git-rebase时出错:
1 2 3 | $ git rebase origin/development fatal: refusing to merge unrelated histories Error redoing merge 1234deadbeef1234deadbeef |
此错误实际上不会取消钢筋网,但您现在处于其中:
1 2 3 4 | $ git status interactive rebase in progress; onto 4321beefdead Last command done (1 command done): pick 1234deadbeef1234deadbeef test merge commit |
现在您可以手动进行合并。查找原始合并提交的父提交:
1 2 3 4 5 6 7 | $ git log -1 1234deadbeef1234deadbeef commit 1234deadbeef1234deadbeef Merge: 111111111 222222222 Author: Hans Dampf Date: Wed Jun 6 18:04:35 2018 +0200 test merge commit |
找出两个合并父项中的哪一个是合并到当前合并的父项(可能是第二个父项,请与
1 2 3 4 5 6 7 | $ 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. |
我也有同样的问题。问题是遥控器有东西阻止了这个。我首先创建了一个本地回购。我在本地添加了一个许可证和readme.md并提交。然后我想要一个远程回购,所以我在Github上创建了一个。在这里,我错误地选择了"用自述文件初始化这个存储库",这也在远程创建了readme.md。
所以现在我跑步的时候git push—设置上游源站主服务器我得到:错误:无法将某些引用推送到"https://github.com/lokeshub/mytods.git"提示:由于当前分支的提示落后,更新被拒绝提示:它的远程对应。集成远程更改(例如提示:"Git Pull…",然后再按。提示:有关详细信息,请参见"git push--help"中的"关于快进的说明"。
为了克服这一点,我做到了Git拉原点主控形状导致以下错误来自https://github.com/lokeshub/mytods*分支主机->获取头致命:拒绝合并无关历史
我试过:git pull origin master--允许不相关的历史记录结果:来自https://github.com/lokeshub/mytods*分支主机->获取头自动合并自述文件.md冲突(添加/添加):合并readme.md中的冲突自动合并失败;修复冲突,然后提交结果。
解决方案:我移除了远程repo并装上了新的板条箱(我认为只有移除自述文件才能起作用),然后下面的操作就起作用了。Git远程RM源站git远程添加源站https://github.com/lokeshub/mytodos.gitgit push—设置上游源站主服务器
1 | git pull origin <branch> --allow-unrelated-histories |
您将被发送到VIM编辑
- 插入提交消息
- 然后按ctrl+x退出vim
git push --set-upstream origin
我也曾为此挣扎过,但还是设法找到了解决办法。
当遇到上面的错误时,只需cherry选择合并提交,然后继续执行REBASE:
1 2 | git cherry-pick -m 1 1234deadbeef1234deadbeef git rebase --continue |