在git重新启动/开发过程中,git显示以下错误消息:
fatal: refusing to merge unrelated histories
Error redoing merge 1234deadbeef1234deadbeef
我的Git版本是2.9.0。它在以前的版本中运行良好。
我如何才能继续使用新版本中引入的强制标志来允许不相关的历史?
在git重新启动/开发过程中,git显示以下错误消息:
fatal: refusing to merge unrelated histories
Error redoing merge 1234deadbeef1234deadbeef
我的Git版本是2.9.0。它在以前的版本中运行良好。
我如何才能继续使用新版本中引入的强制标志来允许不相关的历史?
当前回答
请尝试以下命令:
git pull origin master --allow-unrelated-histories
这应该能解决你的问题。
其他回答
在我的案例中,错误是致命的:每次尝试都拒绝合并不相关的历史记录,尤其是远程添加Git存储库后的第一次拉取请求。
使用--allow不相关的历史标记以这种方式处理拉取请求:
git pull origin branchname --allow-unrelated-histories
根据2.9.0发行说明,git pull已被教导将--allow unrelated history选项传递给基础git merge
由于您既不能推,也不能拉和推,也无法合并拉和推:
您可以在GitHub存储库上创建一个新分支。然后:git添加。gitcommit-m'commitName'并在终端的当前目录中引用该分支。git branch-m master branchNamegit push-f原始分支名称您的代码将被推送到新的分支。然后你可以合并这两个分支。
这对我有用。
由于所有其他答案实际上都没有回答这个问题,所以这里有一个由这个相关问题的答案启发的解决方案。
因此,您在执行git rebase时出错:
$ git rebase origin/development
fatal: refusing to merge unrelated histories
Error redoing merge 1234deadbeef1234deadbeef
此错误实际上并没有取消基,但您现在正处于其中:
$ 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日志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.
为此,输入命令:
git pull origin branchname --allow-unrelated-histories
例如
git pull origin master --allow-unrelated-histories
参考:
GitHub无关历史问题
如果您在GitHub上创建了一个新的存储库,并意外地用README或.gitignore文件初始化了它。
如果您发现由于.git文件夹损坏而无法合并或重新创建基。
然后:
创建新文件夹git克隆将所有文件粘贴到此文件夹
现在,本地和远程将拥有“相关历史”,并将愉快地合并或重新基础。