在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。它在以前的版本中运行良好。
我如何才能继续使用新版本中引入的强制标志来允许不相关的历史?
当前回答
如果您在GitHub上创建了一个新的存储库,并意外地用README或.gitignore文件初始化了它。
如果您发现由于.git文件夹损坏而无法合并或重新创建基。
然后:
创建新文件夹git克隆将所有文件粘贴到此文件夹
现在,本地和远程将拥有“相关历史”,并将愉快地合并或重新基础。
其他回答
blue112的答案并不能解决这个问题,这是在重新定基的背景下。
同步两个分支的唯一方法是将它们合并在一起,从而产生一个额外的合并提交和两组包含相同更改的提交(原始提交和来自重新基础分支的提交)。不用说,这是一个非常令人困惑的情况。
因此,在运行git-rebase之前,请先问问自己,“还有人在看这个分支吗?”如果答案是肯定的,请把手从键盘上拿开,开始思考一种非破坏性的方法来进行更改(例如,git-restore命令)。否则,你可以随心所欲地重写历史。
参考资料:回扣的黄金法则
致命的:拒绝合并不相关的历史也可能是由于肤浅的克隆造成的,因为嫁接提交没有深入到足以看到共同的基础。
尝试git pull--重新基础开发
对于Android Studio和IntelliJ:
首先,承诺一切并解决任何冲突。
然后从IDE下方打开终端并输入:
git pull origin master --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