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 的信息
操作步骤:
git rebase -i
列出 commit 列表- 找到需要修改的 commit 记录,把
pick
修改为edit
或e
,:wq
保存退出 - 修改 commit 的具体信息
git commit --amend
,保存并继续下一条git rebase --continue
,直到全部完成 - 中间也可跳过或退出
git rebase (--skip | --abort)
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