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

如何将Bitbucket项目导入GitHub并保留提交历史与贡献者身份

从Bitbucket迁移项目到GitHub并解决贡献者身份问题

一、迁移项目并完整保留提交历史

这部分操作很直接,只要确保把所有分支、标签和提交记录都同步到GitHub即可:

  1. 在GitHub创建空仓库
    不要勾选「Initialize this repository with a README」,保持仓库完全空白,这样才能顺利推送现有历史。

  2. 从Bitbucket克隆完整仓库到本地
    打开终端,执行以下命令(替换成你的Bitbucket仓库地址):

    git clone --mirror https://bitbucket.org/your-username/your-repo.git
    

    --mirror参数会克隆所有分支、标签和提交历史,确保迁移内容完整。

  3. 切换到克隆的镜像仓库目录

    cd your-repo.git
    
  4. 添加GitHub仓库作为远程地址

    git remote add github https://github.com/your-github-username/your-new-repo.git
    
  5. 推送所有内容到GitHub

    git push github --mirror
    

    这一步会把所有分支、标签和提交历史都同步到GitHub新仓库,完成迁移。


二、解决贡献者身份不被识别的问题

你提到GitHub和Bitbucket用了同一邮箱但未关联,且已设置本地git config邮箱却仍不被识别,核心原因通常是GitHub账户未添加并验证该邮箱,或者提交历史里的邮箱和GitHub账户的邮箱不匹配(比如早期提交用了其他邮箱),分两种情况处理:

情况1:提交历史中的邮箱已和GitHub账户邮箱一致

这种情况只需在GitHub账户中添加并验证该邮箱即可:

  • 登录GitHub,进入「Settings」→「Emails」
  • 点击「Add email address」,输入你在Bitbucket和本地Git中使用的邮箱
  • 完成邮箱验证(GitHub会发验证邮件到该邮箱)
  • 验证完成后,GitHub会自动识别所有使用该邮箱的提交,将你标记为贡献者。

情况2:提交历史中的邮箱和GitHub账户邮箱不匹配

如果之前的提交用了旧邮箱或其他未关联的邮箱,需要修改提交历史中的邮箱为GitHub已验证的邮箱:

  1. 在本地仓库执行邮箱替换脚本
    切换到仓库目录,运行以下脚本(替换成你的旧邮箱、新邮箱和GitHub用户名):

    git filter-branch --env-filter '
    OLD_EMAIL="your-old-email@example.com"
    CORRECT_EMAIL="your-github-verified-email@example.com"
    CORRECT_NAME="Your GitHub Username"
    if [ "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL" ]
    then
        export GIT_COMMITTER_NAME="$CORRECT_NAME"
        export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL"
    fi
    if [ "$GIT_AUTHOR_EMAIL" = "$OLD_EMAIL" ]
    then
        export GIT_AUTHOR_NAME="$CORRECT_NAME"
        export GIT_AUTHOR_EMAIL="$CORRECT_EMAIL"
    fi
    ' --tag-name-filter cat -- --branches --tags
    
  2. 强制推送修改后的历史到GitHub
    注意:这会覆盖GitHub上的现有历史,确保没有其他人在这个仓库工作,或者提前沟通确认:

    git push github --force --all
    git push github --force --tags
    
  3. 验证结果
    回到GitHub仓库页面刷新,就能看到你的贡献者身份被正确识别了。


额外提醒

  • 如果Bitbucket仓库是私有仓库,记得把GitHub新仓库的权限设置为私有(如需)。
  • 迁移完成后,更新本地仓库的远程地址指向GitHub:
    git remote set-url origin https://github.com/your-github-username/your-new-repo.git
    

内容的提问来源于stack exchange,提问作者kamaci

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:22:15