其他分享
首页 > 其他分享> > Git 修改已提交 commit 的信息

Git 修改已提交 commit 的信息

作者:互联网

修改最后一次提交 commit 的信息

# 修改最近提交的 commit 信息
$ git commit --amend --message="XXX" --author="XXX <XXX@XX.com>"

# 仅修改 message 信息
$ git commit --amend --message="XXX"

# 仅修改 author 信息
$ git commit --amend --author="XXX <XXX@XX.com>"

 

修改历史提交 commit 的信息

操作步骤:

  

 1 # 列出 rebase 的 commit 列表,不包含 <commit id>
 2 $ git rebase -i <commit id>
 3 # 最近 3 条
 4 $ git rebase -i HEAD~3
 5 # 本地仓库没 push 到远程仓库的 commit 信息
 6 $ git rebase -i
 7 
 8 # vi 下,找到需要修改的 commit 记录,```pick``` 修改为 ```edit``` 或 ```e```,```:wq``` 保存退出
 9 # 重复执行如下命令直到完成
10 $ git commit --amend --message="modify message by daodaotest" --author="XXX <XXX@163.com>"
11 $ git rebase --continue
12 
13 # 中间也可跳过或退出 rebase 模式
14 $ git rebase --skip
15 $ git rebase --abort

  

批量修改历史 commit 信息

创建批量脚本changeCommit.sh

 1 $ cat changeCommit.sh
 2 #!/bin/sh
 3 
 4 git filter-branch --env-filter '
 5 
 6 # 之前的邮箱
 7 OLD_EMAIL="XXX@XX.com"
 8 # 修改后的用户名
 9 CORRECT_NAME="XXX"
10 # 修改后的邮箱
11 CORRECT_EMAIL="XXX@XX.com"
12 
13 if [ "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL" ]
14 then
15     export GIT_COMMITTER_NAME="$CORRECT_NAME"
16     export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL"
17 fi
18 if [ "$GIT_AUTHOR_EMAIL" = "$OLD_EMAIL" ]
19 then
20     export GIT_AUTHOR_NAME="$CORRECT_NAME"
21     export GIT_AUTHOR_EMAIL="$CORRECT_EMAIL"
22 fi
23 ' --tag-name-filter cat -- --branches --tags

 

执行脚本成功后,强制推送到远程服务器:

$ git push --force --tags origin 'refs/heads/*'

 

转自:https://cloud.tencent.com/developer/article/1730774

标签:Git,--,rebase,XXX,git,提交,commit,EMAIL
来源: https://www.cnblogs.com/karila/p/16457671.html