You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法推送至BitBucket:fatal: refusing to merge unrelated histories问题求助

解决方案

方案一:保留本地Git仓库,合并远程历史(推荐)

该方案无需删除本地.git目录,可完整保留IntelliJ配置,同时解决远程与本地历史无关的问题:

  • 确认本地已完成初始提交(你已执行git add --all和git commit,此步骤可跳过)
  • 检查远程仓库关联状态:
    git remote -v
    
    若未关联远程,执行:
    git 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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 04:17:41