在 Git 中修改已提交的 commit message 可以通过几种不同的方法实现。以下是两种常用的方法:

修改Message

方法 1: 使用 git commit --amend

如果你只是想修改最近的一次提交的信息,可以使用 git commit --amend 命令。这将允许你修改最后一次提交的 commit message 而不改变任何提交的内容。

  1. 查看提交历史:

    git log
    

    确认你想要修改的提交。

  2. 修改提交信息:

    git commit --amend -m "新的提交信息"
    

这将用新的提交信息覆盖最后一次提交的信息。如果最后一次提交包含了多个文件或者你想要修改的提交不是最近的一次提交,你可能需要指定文件:

git commit --amend --no-edit

然后手动添加你想要包含在此次提交中的文件:

git add <file1> <file2>
git commit --amend -m "新的提交信息"

方法 2: 使用 git rebase -i

如果你想要修改的提交不是最近的一次提交,或者你想同时修改多个提交的信息,可以使用交互式的 rebase。

  1. 查看提交历史:

    git log
    

    确认你想要修改的提交。

  2. 启动交互式 rebase:

    git rebase -i <commit-hash>
    

    其中 <commit-hash> 是你想开始交互式 rebase 的提交的哈希值。通常选择的是要修改的提交之前的那个提交。

  3. 编辑 rebase 指令:
    这会打开一个文本编辑器,列出从 <commit-hash> 开始的所有后续提交。列表中的每一行代表一个提交,你可以通过修改这些行前面的指令来控制 Git 对每个提交的操作。

    • pick 是默认选项,意味着保留该提交不变。
    • edit (e) 可以用来修改一个提交的信息。
  4. 修改提交信息:
    将你想要修改的提交的 pick 改为 edit。保存并关闭编辑器后,Git 会暂停在你选择的提交上,然后你可以运行:

    git commit --amend -m "新的提交信息"
    
  5. 继续 rebase:
    修改完提交信息后,运行:

    git rebase --continue
    

这将完成 rebase 过程,并使用新的提交信息替换旧的提交信息。

注意事项

  • 修改提交信息会重写提交历史,因此如果你的分支已经被推送到远程仓库并且被其他人克隆或拉取过,你需要先与团队成员沟通再执行这些操作。
  • 如果你确实需要重写提交历史并推送更新,可以使用带有 --force-f 选项的 git push 命令:
    git push origin <branch-name> --force
    

修改author

如果已合入的 Patch 提交信息有误(需修改 Author 或 Committer),需重写 Git 历史。
​方法一:使用 git commit --amend 修改最近一次提交

修改后续合入 Patch 的默认提交者信息

重新配置 Git 的全局或本地用户信息后再合入可直接生效:

# 全局配置(所有仓库生效)
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"

# 仅当前仓库生效
git config user.name "Your Name"
git config user.email "your.email@example.com"

修改最近一次提交的 Author 和 Committer 信息

git commit --amend --reset-author --no-edit
# --reset-author: 使用当前 Git 配置的用户信息覆盖 Author 和 Committer
# --no-edit: 保留提交消息不变

使用 git rebase 批量修改多个提交

# 修改最近 N 次提交
git rebase -i HEAD~N  # N 为提交数量

在交互式界面中,将需要修改的提交前的 pick 改为 edit,保存退出后依次执行:

git commit --amend --reset-author --no-edit
git rebase --continue
Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐