当前位置: 首页 > news >正文

Git 提交后发现作者信息错了,如何安全修复已 push 的历史?

前言

提交并 push 完代码后,发现 Git 的 author name / email 设置错了,导致贡献记录、头像显示异常。

修复思路与步骤(已验证可行)

  1. 永久修正本地配置(防后续出错)

    git config user.name "正确用户名"
    git config user.email "正确邮箱@example.com"
    
  2. 修改最近几个 commit 的作者(小范围修复首选)

    git rebase -i HEAD~3   # 将要改的 commit 前 pick 改为 edit,保存退出
    

    Git 停在 edit commit 上:

    git commit --amend --author="正确用户名 <正确邮箱@example.com>" --no-edit
    git rebase --continue   # 重复直到完成
    

    完成后,git status 应显示在分支上(非 detached HEAD)。

  3. 推送更新历史

    git push --force-with-lease origin main   # 优先用这个,更安全
    

常见坑与解决

  • Detached HEAD 状态:amend 后若未 git rebase --continue,会卡住。
    直接运行 git rebase --continue 即可回到分支。

  • 推送失败:protected branch 拒绝 force push
    最常见错误:
    GitLab: You are not allowed to force push code to a protected branch on this project
    pre-receive hook declined(钩子拒绝非 fast-forward 推送)。

    推荐处理方式(GitLab 13.5+ 支持)

    1. 项目 → Settings → Repository → Protected branches(或 Branch rules)。
    2. 找到 main 分支(或匹配规则),点击编辑 / View details。
    3. Allowed to force push 处开启开关(通常针对 Allowed to push 的角色,如 Maintainers)。
    4. 保存后立即推送:
      git push --force-with-lease origin main
      
    5. 推送成功后,立刻关闭该开关,恢复保护(避免误操作风险)。

    备选方式(如果无 “Allowed to force push” 选项,或版本较旧)

    • 临时 Unprotect main 分支 → 推送 → 再 Protect 回来。
    • 或 push 到新分支:
      git push origin main:fix-author-branch
      
      然后创建 Merge Request,让 Maintainer 合并(更合规,但历史不会被重写成同一 commit)。

    权限不足时:找 Maintainer/Owner 帮忙临时调整规则或直接推送。

  • 其他:多人协作时,优先避免 force push 改历史;只需头像/贡献正确,可把邮箱加到平台账号的 Emails 设置(平台主要认邮箱)。

http://www.jsqmd.com/news/257582/

相关文章:

  • Architecture - Security
  • 【9*】集合幂级数学习笔记
  • IoU损失函数新突破!Inner-IoU 让 YOLOv11 检测精度显著提升 | 完整实现教程
  • .Net base software framework - pattern, configuration and tool
  • Cloud Connector and Plugin
  • YOLOv13 模块改造实战:从零集成 SFSConv 提升目标检测精度(保姆级教程)
  • 处理完ACPI!AcpiBuildRunMethodList链表后返回要检查acpi!AcpiBuildQueueList链表不空运行continue继续循环
  • UNet++MobileNetv2模型优化,RK3588部署效率飙升300%
  • Angular Interview
  • 第二次运行ACPI!ACPIBuildProcessQueueList函数链表内的buildRequest->TargetListEntry都是ACPI!AcpiBuildRunMethodList
  • CSDN首页发布文章请输入文章标题(5~100个字) 还需输入5个字摘要:会在推荐、列表等场景外露,帮助读者快速了解内容,支持一键将正文前 256 字符键入摘要文本框0 / 256A
  • RDBMS interview questions
  • 攻克低照度检测难题:YOLOv11主干网络增强新方案PE-YOLO详解
  • 精度损失1.6%,速度提升10.3 FPS:YOLOv8稀疏训练+Slim剪枝高效压缩方案
  • 完整教程:【Linux】常用指令
  • Map提升4.89%!YOLOv13融合RepVGG-OREPA与SE注意力的多分支设计
  • Preliminary Design - EM driven VSP restart (VUEDPI-3838)
  • YOLO-World:从入门到实战的多模态目标检测全指南
  • JavaAPI 工具类
  • create_deep_agent vs create_agent 的区别
  • 不要让几十万血汗钱打水漂!河北农村自建房必须要了解的7个问题,不懂真的亏大了! - 苏木2025
  • 基于VUE的高校毕业设计管理系统[VUE]-计算机毕业设计源码+LW文档
  • 变量的定义
  • 南京欧米奇西点西餐学校市场口碑怎么样,学校靠谱排名 - 工业品牌热点
  • 2026年上海优秀的RFID智能标签,RFID服装标签,RFID贴纸厂家实力推荐榜 - 品牌鉴赏师
  • idea生成javadoc文件
  • 2026年国内知名的催化燃烧工厂推荐榜单,滤筒除尘器/除尘器/RTO/活性炭箱/催化燃烧/旋风除尘器,催化燃烧厂商推荐 - 品牌推荐师
  • 2026耳塞品牌权威推荐,国际认证与本土适配双重优势品牌盘点 - 品牌鉴赏师
  • Linux chmod命令
  • 短视频开源源码,js函数柯里化 - 云豹科技