无法推送至BitBucket:fatal: refusing to merge unrelated histories问题求助
解决方案
方案一:保留本地Git仓库,合并远程历史(推荐)
该方案无需删除本地.git目录,可完整保留IntelliJ配置,同时解决远程与本地历史无关的问题:
- 确认本地已完成初始提交(你已执行
git add --all和git commit,此步骤可跳过) - 检查远程仓库关联状态:
若未关联远程,执行:git remote -vgit remote add origin <你的BitBucket仓库地址> - 拉取远程master分支,允许合并无关历史:
git pull origin master --allow-unrelated-histories - 此时会进入合并冲突流程,核心冲突通常来自
.gitignore文件:- 若本地未自定义
.gitignore规则,直接保留远程版本即可; - 若本地有自定义规则,手动合并两个文件内容,保留需要的规则。
- 若本地未自定义
- 解决冲突后提交合并结果:
git add .gitignore git commit -m "Merge remote master's .gitignore with local" - 最后推送代码到远程master:
git push origin master
方案二:克隆远程仓库迁移代码(保留IntelliJ配置)
若坚持采用克隆远程仓库的方式,按以下步骤操作可避免丢失IntelliJ配置:
- 先备份本地项目的
.idea目录(IntelliJ的所有配置均存储于此),可复制到项目外的临时文件夹 - 删除本地项目的
.git目录 - 克隆远程BitBucket仓库到本地:
git clone <你的BitBucket仓库地址> - 进入克隆后的仓库目录,切换至develop分支(若远程存在该分支):
git checkout develop - 新建feature分支:
git checkout -b feature/your-feature-name - 将原项目的所有文件(排除原
.git目录)复制到当前克隆的仓库目录下 - 将之前备份的
.idea目录复制回当前仓库目录 - 执行提交与推送操作:
git add --all git commit -m "Initial commit of project files" git push origin feature/your-feature-name - 此时再发起PR,不会出现「Unrelated branches」错误
额外提示
- IntelliJ配置文件默认不会被Git追踪(
.gitignore通常包含.idea规则),若需保留个人配置,可选择备份.idea目录,或修改.gitignore移除对.idea的忽略(团队项目不推荐此操作)
内容的提问来源于stack exchange,提问作者John Little
相关产品推荐
相关产品推荐

