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

news/2026/1/17 9:56:55/文章来源:https://www.cnblogs.com/niuben/p/19487878

前言

提交并 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.mzph.cn/news/1172924.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Architecture - Security

Architecture - Security

【9*】集合幂级数学习笔记

前言如果你不会集合幂级数,那你就进不了省队。骗你的,会了也不一定能进省队。 长文警告:本文一共 \(1467\) 行,请合理安排阅读时间。 此类知识点大纲中并未涉及,所以【9】是我自己的估计,后带星号表示估计,仅供…

IoU损失函数新突破!Inner-IoU 让 YOLOv11 检测精度显著提升 | 完整实现教程

文章目录 目标检测损失函数革新:Inner-IoU 助力 YOLOv11 精度飙升实战教程 一、Inner-IoU 核心原理:辅助边框如何打破 IoU 瓶颈? 1. 传统 IoU 损失的局限性 2. Inner-IoU 的创新设计:辅助边框的魔力 3. 实验效果:用数据说话 二、Inner-IoU 集成到 YOLOv11 全流程:从代码修…

.Net base software framework - pattern, configuration and tool

.Net base software framework - pattern, configuration and toolPage 21 Genric constraintC# generic constraint is a way to specify requirements on the type parameter of a generic class or method. It allo…

Cloud Connector and Plugin

Cloud Connector and PluginTelecom multi service operator business tool to organize job fullfillment of 10k field repair and install technician 3 self contain microservices - loosely coupling architectu…

YOLOv13 模块改造实战:从零集成 SFSConv 提升目标检测精度(保姆级教程)

零基础手把手教程:在 YOLOv13 中集成 SFSConv,让目标检测更上一层楼 文章目录 零基础手把手教程:在 YOLOv13 中集成 SFSConv,让目标检测更上一层楼 前言 目录 1. 为什么需要 SFSConv?传统 CNN 的局限与高级特征的需求 1.1 传统卷积的特点与不足 1.2 多尺度特征的重要性 1.…

UNet++MobileNetv2模型优化,RK3588部署效率飙升300%

文章目录【保姆级教程】基于UNet&MobileNetv2的语义分割模型从训练到RK3588部署&#xff1a;让边缘AI落地效率提升300%引读一、技术选型与场景价值二、环境搭建&#xff1a;从云端到边缘的工具链闭环1. 云端训练环境&#xff08;Python生态&#xff09;2. 模型转换工具链&a…

处理完ACPI!AcpiBuildRunMethodList链表后返回要检查acpi!AcpiBuildQueueList链表不空运行continue继续循环

处理完ACPI!AcpiBuildRunMethodList链表后返回要检查acpi!AcpiBuildQueueList链表不空运行continue继续循环0: kd> g Breakpoint 5 hit eax00000000 ebx00000000 ecx89906e40 edx00000001 esi89906e30 edi80b019f4 eipf73fb911 espf789ef68 ebpf789ef84 iopl0 nv up…

Angular Interview

Angular InterviewAngular.json just like csproj in c# to defined elements needed to build and run the angular app, it provides application entry point, first view landed, angular defined styles, ts->…

第二次运行ACPI!ACPIBuildProcessQueueList函数链表内的buildRequest->TargetListEntry都是ACPI!AcpiBuildRunMethodList

第二次运行ACPI!ACPIBuildProcessQueueList函数链表内的buildRequest->TargetListEntry都是ACPI!AcpiBuildRunMethodListVOID ACPIBuildDeviceDpc(IN PKDPC Dpc,IN PVOID DpcContext,IN PVOID SystemArgument1,IN PVOID SystemArgument2) {do {//// Assume that…

CSDN首页发布文章请输入文章标题(5~100个字) 还需输入5个字摘要:会在推荐、列表等场景外露,帮助读者快速了解内容,支持一键将正文前 256 字符键入摘要文本框0 / 256A

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

RDBMS interview questions

RDBMS interview questions

攻克低照度检测难题:YOLOv11主干网络增强新方案PE-YOLO详解

购买即可解锁300+YOLO优化文章,并且还有海量深度学习复现项目,价格仅需两杯奶茶的钱,别人有的本专栏也有! 文章目录 YOLOv11低照度增强主干网络PE-YOLO:原理与完整实现教程 算法核心原理 物理模型基础 网络架构设计 完整代码实现 环境配置与依赖 PE模块网络定义 集成PE模…

精度损失1.6%,速度提升10.3 FPS:YOLOv8稀疏训练+Slim剪枝高效压缩方案

剪枝对比 文章目录 slim论文解读:2017年 Slim剪枝(Network Slimming)简介 核心思想 1. **在BatchNorm层中的缩放因子(γ)上引入 L1 正则化** Slim剪枝的步骤 第一步:训练阶段加正则 第二步:通道剪枝 第三步:微调(Fine-tuning) 移植代码 下载yolov8代码 在工作根目录…

完整教程:【Linux】常用指令

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

Map提升4.89%!YOLOv13融合RepVGG-OREPA与SE注意力的多分支设计

绿色线条为添加RepVGGBlock后的效果,map提升4.89,召回率提升8.66 REPVGGOREPA模块代表了重参数化技术的最新发展,它通过巧妙的架构设计实现了训练时的丰富表达和推理时的高效计算。 文章目录 移植 创建ultralytics\cfg\models\v13\yolov13-REPVGGOREPA.yaml 修改ultralytics\…

Preliminary Design - EM driven VSP restart (VUEDPI-3838)

Preliminary Design - EM driven VSP restart (VUEDPI-3838)Story VUEDPI-3838: Ability to restart specific program container from a specific Splicer/RC Background: Frontend: Backend: Work Breakdown and Est…

YOLO-World:从入门到实战的多模态目标检测全指南

文章目录 从0到1掌握YOLO-World:多模态目标检测入门到实战超详细教程 一、先搞懂“多模态目标检测”和YOLO-World到底是什么 1. 什么是多模态目标检测? 2. YOLO-World:速度与精度的多模态标杆 二、YOLO-World的技术逻辑:从输入到输出的全流程 1. 核心架构:“图像-文本”双…

JavaAPI 工具类

工具类 Math public static int abs (int a) 获取参数绝对值 public static duble ceil (doouble a)向上取整 public static duble floor (doouble a)向下取整 public static int round(float a) 四舍五入 public static int max (int a,int b)获取两个int…

create_deep_agent vs create_agent 的区别

目录 1. create_agent - LangChain 标准函数 2. create_deep_agent - DeepAgents 高级函数 核心区别对比 实际应用对比 工作流程对比 何时使用哪个&#xff1f; 总结 1. create_agent - LangChain 标准函数 来源&#xff1a; langchain.agents 作用&#xff1a; 创建基…