ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

TIL:用 git commit --amend --author 修正上一次提交的作者信息

TIL:用 git commit --amend --author 修正上一次提交的作者信息 文档教程知识库【免费下载链接】til:memo: Today I Learned项目地址https://gitcode.com/gh_mirrors/ti/til点击查看免费下载提交作者写错、邮箱拼错或误用了错误的 Git 身份是日常开发中常见又尴尬的问题。本文以 til 仓库中的 git/amend-author-of-previous-commit.md 为核心讲解如何用一条git commit --amend --author命令安全地修正上一个提交的作者信息并结合仓库内其他 Git 技巧作者信息查看、--reset-author、交互式 rebase 批量改写给出完整的实战方案。读完本文你将能单次修正、批量重置作者身份并清楚重写历史带来的 SHA 变化与推送风险。核心命令一条命令改掉上一个提交的作者Git 允许直接修改最新一次提交即HEAD指向的提交的作者信息命令格式如下$ git commit --amend --author Don Draper ddrapersterlingcooper.com这条命令同时做了两件事--amend对上一次提交进行修订不新增提交节点而是用当前暂存区以及本次传入的参数重写该提交--author 名字 邮箱指定新的作者信息格式严格为显示名 空格 尖括号包裹的邮箱。--author接受 Git 标准 author 格式Name email也可以直接传裸邮箱地址。命令执行后Git 会打开编辑器让你确认或修改提交信息message保存后即完成重写。注意--amend同时也会把当前暂存区staged的内容并入该提交。如果只想改作者、不想带入其他改动请先确认暂存区干净或结合--no-edit使用见下文。理解 author 与 committer改的是哪一个Git 的每次提交内部同时记录两组身份信息Author作者最初编写这些改动的人受--author影响Committer提交者实际执行git commit提交的人默认取当前仓库或全局配置的user.name/user.email。--amend --author只重写 Author 字段Committer 字段通常会更新为当前执行命令的人与当前时间。因此若你只是帮别人代提交、需要把作者改回真正的编写者用--author最合适若你想让作者信息与当前配置的user.name/user.email保持一致则应使用--reset-author见下文变体章节。想直观确认改前与改后的作者信息可以用git log --format只看名字与邮箱。仓库中的 git/list-all-authors-on-git-repository.md 详细介绍了两个最常用的格式化占位符%anAuthor Name作者名字%aeAuthor Email作者邮箱$ git log -1 --format%an %ae Don Draper ddrapersterlingcooper.com这就是验证修改是否生效最快捷的方式。实战从修改前检查到修改后验证下面给出一个完整可复现的流程。第一步确认当前最新提交的作者。$ git log -1 --format%an %ae Jane Doe janeexample.com第二步执行作者改写。若提交信息无需变动可加--no-edit跳过编辑器若暂存区没有其他内容命令会纯粹地只做身份重写$ git commit --amend --author John Smith johnexample.com --no-edit第三步再次查看确认作者已更新。$ git log -1 --format%an %ae John Smith johnexample.com如果只是想让作者回到当前配置的身份则使用--reset-author变体它会把 Author 重置为仓库或全局配置中的user.name与user.email$ git commit --amend --reset-author --no-edit在 til 仓库的 git/list-all-git-aliases-from-gitconfig.md 中作者就把这一常用操作固化为别名alias.reset-authors commit --amend --reset-author -CHEAD其中-CHEAD等价于--reuse-messageHEAD表示直接复用上一次提交的 message不再打开编辑器。配置后即可用git reset-authors一键把最新提交的作者重置为当前身份。批量修正对一系列提交统一改写作者--amend只能作用于最新一次提交。若错误作者分布在多个历史提交上需要借助交互式 rebase。仓库中的 git/rebase-commits-with-an-arbitrary-command.md 演示了--exec与--amend --reset-author的组合$ git rebase -i HEAD~3 --exec git commit --amend --reset-author -CHEAD执行后 Git 会生成待确认的交互式 rebase 计划文件为涉及的每个提交都插入一条exec指令pick ea4a215 Add Globally Install A Package With Yarn as a javascript til exec git commit --amend --reset-author -CHEAD pick a4f4143 Add Initialize A New JavaScript Project With Yarn as a javascript til exec git commit --amend --reset-author -CHEAD pick 2f00aeb Add Default And Named Exports From The Same Module as a javascript til exec git commit --amend --reset-author -CHEAD保存并执行后这 3 个提交的作者都会被重置为当前配置身份。若需要为不同提交指定不同作者把--reset-author换成各自的--author Name email即可。更细粒度的做法是手动编辑 rebase 计划把需要改写的提交行从pick改为edit逐个执行git commit --amend --author。此外--amend也是日常原子提交工作流的一部分仓库中的 git/auto-squash-those-fixup-commits.md 与 git/quicker-commit-fixes-with-the-fixup-flag.md 展示了如何用--fixup--autosquash把对早期提交的修改平滑合并回原位属于修正历史主题的延伸技巧可一并阅读。安全边界重写历史的代价任何形式的--amend与 rebase 都会重写提交带来两个必须明确的后果提交 SHA 会改变。作者字段是提交对象内容的一部分一旦修改该提交及其所有后代提交的哈希都会变化。对于上一个提交这种场景若它已被推送到远端需要git push --force或--force-with-lease才能同步只适合尚未共享的历史。修改他人已经拉取、基于其上的提交会造成双方历史分叉与合并冲突。因此最安全的使用场景是提交刚完成、尚未 push或仅在个人分支上操作。判断该提交是否已推送可对比本地与远端$ git log -1 --format%h %an %ae {u}..HEAD有输出说明最新提交尚未推送此时--amend完全安全。小结修正上一个提交的作者git commit --amend --author Name email重置为当前配置身份git commit --amend --reset-author验证改动git log -1 --format%an %ae批量改写git rebase -i HEAD~N --exec git commit --amend --reset-author -CHEAD注意--amend会并入暂存区内容、会改变提交 SHA已推送的提交需谨慎 force push。相关参考文档git/amend-author-of-previous-commit.md、git/list-all-authors-on-git-repository.md、git/list-all-git-aliases-from-gitconfig.md、git/rebase-commits-with-an-arbitrary-command.md。赞分享文档教程知识库【免费下载链接】til:memo: Today I Learned项目地址https://gitcode.com/gh_mirrors/ti/til点击查看免费下载相关推荐first-contributions 新手进阶用 git commit --amend 修正最近一次提交的提交信息与遗漏内容first contributions 新手进阶用 git commit amend 修正最近一次提交的提交信息与遗漏内容 git commit amend文档教程开源治理first-contributions 进阶使用 git commit --amend 修改最近一次提交的提交信息与内容first contributions 进阶使用 git commit amend 修改最近一次提交的提交信息与内容 本文基于 first contribut文档教程开源治理awesome-blender 实战指南5 步找齐你需要的 Blender 插件、教程与免费 3D 资源awesome blender 实战指南5 步找齐你需要的 Blender 插件、教程与免费 3D 资源 还在到处搜插件、找教程、扒贴图素材吗awesome文档教程上一篇Sunshine 游戏串流服务器快速上手从安装到 Moonlight 首次串流的 3 步路径下一篇XHS-Downloader3步轻松获取小红书无水印原图视频的终极指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表