
这个错误发生在你尝试合并两个没有共同历史的分支时。Git 默认会拒绝这样的操作以防止意外合并不相关的项目。
今天优雅草卓伊凡遇到了这个问题,其实此前还没遇到这个问题过,那我们必须学习并且理解下

--allow-unrelated-histories 选项(推荐)如果你想强制合并这两个不相关的历史,可以使用:
git pull origin branch-name --allow-unrelated-histories或者如果你直接使用 merge 命令:
git merge origin/branch-name --allow-unrelated-histories如果你确定要合并这些不相关的历史:
git fetch origingit merge origin/branch-name --allow-unrelated-histories如果你不想合并不相关的历史:
git checkout -b new-branch origin/branch-name在 Git 中,”不相关的历史”指的是两个分支或仓库之间没有共同的祖先提交,它们是完全独立发展起来的代码历史。
想象两个不同的项目:
这两个项目的提交历史没有任何交点,这就是”不相关的历史”。
mkdir new-project
cd new-project
git init
echo "# 新项目" > README.md
git add .
git commit -m "初始提交"
git remote add origin https://github.com/user/existing-repo.git
git pull origin main # 这里会出现错误git clone https://github.com/user/empty-repo.git
cd empty-repo
echo "内容" > file.txt
git add .
git commit -m "添加文件"
git pull # 错误出现git clone https://github.com/user/project1.git
cd project1
git remote add project2 https://github.com/user/project2.git
git fetch project2
git merge project2/main # 错误出现Git 使用有向无环图(DAG)存储提交历史。当合并时,Git 会寻找两个分支的”最近共同祖先”(merge base)。如果找不到共同祖先,Git 会拒绝合并以防止意外合并不相关的代码库。
命令 | 默认行为 | 带 --allow-unrelated-histories 行为 |
|---|---|---|
git pull | 拒绝 | 允许合并 |
git merge | 拒绝 | 允许合并 |
git rebase | 拒绝 | 不适用 |
--allow-unrelated-historiesgit log --graph --oneline --all # 查看合并后的历史
git status # 检查合并状态git rebase 而非合并来保持历史线性理解”不相关的历史”概念有助于更好地管理 Git 仓库,特别是在处理复杂项目或合并来自不同来源的代码时。



场景1:本地初始化后连接非空远程仓库
时间线:
本地: [init] -> [L1: 添加README]
远程: [R1: 项目初始化] -> [R2: 添加功能]场景2:合并两个独立项目
项目A: [A1] -> [A2] -> [A3]
项目B: [B1] -> [B2] -> [B3]Git合并时会执行以下检查:

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。