Git 修改已提交的 commit 信息,包括作者、邮箱
本文由 简悦 SimpRead 转码, 原文地址 www.silinchen.com
Git 修改已提交的 commit 信息,包括作者、邮箱
1. 背景
不同电脑配置了不同的用户名、邮箱,例如:不小心用公司电脑提交了 commit 到个人的 github 仓库,想改掉已经提交的 commit 的信息。
2. 修改用户名、邮箱
1 |
|
这里修改只对后续的提交有效
接下来看看怎么修改已经提交的 commit 信息
3. 修改 commit 信息,包括作者、邮箱
3.1 修改最后一次 commit 的信息
直接使用 amend 进行修正
3.1.1 修改 commit 注释信息
1 |
|
出现修改注释信息的界面, 输入 i
进入修改模式,修改好注释后,按 Esc
键 退出编辑模式,输入 :wq
保存并退出。
注:注释信息一般显示在第一行,窗口下面第一个字符是 #
的内容不需要修改
3.1.2 修改作者、邮箱
1 |
|
例如:git commit --amend --author="silinchen <silinccc@gmail.com>"
3.2 修改某几次 commit 的信息
3.2.1 使用 log 查看提交记录
1 |
|
注:-2 代表最后 2 条记录
或者加上 –oneline 查看简短信息(oneline:一行)
1 |
|
3.2.2 rebase 需要修改的 commit
1 |
|
注:
HEAD~2 表示最后两条 commit
指定 commit ID 则表示对应 commit 之前的记录
这里需要注意,如果你需要修改某条 commit 信息,commit ID 需要填再前一条 commit 的 ID
执行 rebase 命令后,会出现 reabse 的编辑窗口,窗口底下会有提示怎么操作。
这里把需要修改的 commit 最前面的 pick
改为 edit
,可以一条或者多条。
根据提示,接下来同样使用 –amend 进行修改
3.2.3 修改 commit 信息
只修改注释信息
1 |
|
只修改作者、邮箱
1 |
|
同时修改注释信息、作者、邮箱
1 |
|
修改完成后,继续执行下面命令
1 |
|
如果是修改多条的话,重复以上 3.3.2 操作即可。
直到出现以下提示,说明全部修改已经完成。
1 |
|
3.2.4 push 仓库更改到远程仓库
强制 push
1 |
|
注:当仓库是多人操作时,可能会覆盖别人 push 的代码,请谨慎操作。
3.3 使用脚本自动更改
github 以前的推荐操作,但现在该文章已经不在,原因未知。(链接地址)
3.3.1 拉取一个新的仓库
注意:不要在旧的仓库里操作,用以下命令重新拉取一个仓库
1 |
|
进入仓库
1 |
|
3.3.2 使用脚本修改信息
使用以下脚本,把相关参数改为自己的。
- OLD_EMAIL:旧邮箱,需要被修改掉的 commit 邮箱
- CORRECT_NAME: 新用户名
- CORRECT_EMAIL: 新邮箱
1 |
|
创建一个 sh 脚本文件,把上面脚本内容复制进来,保存
1 |
|
执行脚本
1 |
|
执行脚本会看到以下输出信息
3.3.3 推送修改到远程仓库
使用一下命令,强制推送修改到远程仓库
1 |
|
3.3.4 删除本地仓库
1 |
|
相关文档
Git 修改已提交的 commit 信息,包括作者、邮箱