学习
实践
活动
专区
工具
TVP
写文章
专栏首页叨叨软件测试Git 修改已提交 commit 的信息

Git 修改已提交 commit 的信息

背景

由于 Github 和公司 Git 使用账号不一样,偶尔没注意,提交出错后就需要修改 commit 信息。

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

# 修改最近提交的 commit 信息
$ git commit --amend --message="modify message by daodaotest" --author="jiangliheng <jiang_liheng@163.com>"

# 仅修改 message 信息
$ git commit --amend --message="modify message by daodaotest"

# 仅修改 author 信息
$ git commit --amend --author="jiangliheng <jiang_liheng@163.com>"

修改历史提交 commit 的信息

操作步骤:

  • git rebase -i 列出 commit 列表
  • 找到需要修改的 commit 记录,把 pick 修改为 edite:wq 保存退出
  • 修改 commit 的具体信息git commit --amend,保存并继续下一条git rebase --continue,直到全部完成
  • 中间也可跳过或退出git rebase (--skip | --abort)
# 列出 rebase 的 commit 列表,不包含 <commit id>
$ git rebase -i <commit id>
# 最近 3 条
$ git rebase -i HEAD~3
# 本地仓库没 push 到远程仓库的 commit 信息
$ git rebase -i

# vi 下,找到需要修改的 commit 记录,```pick``` 修改为 ```edit``` 或 ```e```,```:wq``` 保存退出
# 重复执行如下命令直到完成
$ git commit --amend --message="modify message by daodaotest" --author="jiangliheng <jiang_liheng@163.com>"
$ git rebase --continue

# 中间也可跳过或退出 rebase 模式
$ git rebase --skip
$ git rebase --abort

批量修改历史 commit 信息

创建批量脚本changeCommit.sh

$ cat changeCommit.sh
#!/bin/sh

git filter-branch --env-filter '

# 之前的邮箱
OLD_EMAIL="jiangliheng@126.com"
# 修改后的用户名
CORRECT_NAME="jiangliheng"
# 修改后的邮箱
CORRECT_EMAIL="jiangliheng@163.com"

if [ "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL" ]
then
    export GIT_COMMITTER_NAME="$CORRECT_NAME"
    export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL"
fi
if [ "$GIT_AUTHOR_EMAIL" = "$OLD_EMAIL" ]
then
    export GIT_AUTHOR_NAME="$CORRECT_NAME"
    export GIT_AUTHOR_EMAIL="$CORRECT_EMAIL"
fi
' --tag-name-filter cat -- --branches --tags

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

$ git push --force --tags origin 'refs/heads/*'
文章分享自微信公众号:
叨叨软件测试

本文参与 腾讯云自媒体分享计划 ,欢迎热爱写作的你一起参与!

作者:蒋李恒
原始发表时间:2020-10-20
如有侵权,请联系 cloudcommunity@tencent.com 删除。
登录 后参与评论
0 条评论

相关文章

  • 【Git】修改已经提交的commit内容

    通过 Git 进行版本管理时,对于已经提交但没有 push 的 message 信息,发现提交信息填写错误后,如何进行修改? 对于已经 push 的 mess...

    程序小工
  • Git提交信息规范Git Commit Message

    目前规范使用较多的是引用或衍生  Github Angular开发中<提交信息准则>章节(Commit Message Guidelines).以下为规范译文:

    gigiwangs
  • Git修改已提交的commit1 本地修改

    由于以下修改本身是对版本历史的修改,在需要push到远程仓库时,往往是不成功的,只能强行push,这样会出现的一个问题就是,如果你是push到多人协作的远程仓库...

    JavaEdge
  • git commit –amend 修改git提交记录用法详解

    有时你提交过代码之后,发现一个地方改错了,你下次提交时不想保留上一次的记录;或者你上一次的commit message的描述有误,这时候你可以使用接下来的这个命...

    Java架构师必看
  • Git 如何针对项目修改本地提交提交人的信息

    如果你不是使用 TortoiseGit,你可以在你项目 Check out 的目录中,打开文件:

    HoneyMoose
  • git commit 删除中间提交的错误commit id

    经常会遇到提交多个commit ,最后发现版本有问题,需要删除中间的一个commit, git 中并没有提供现成的命令,需要多个命令组合完成该功能.

    程序手艺人
  • Git 如何针对项目修改本地提交提交人的信息

    如果你不是使用 TortoiseGit,你可以在你项目 Check out 的目录中,打开文件:

    HoneyMoose
  • Git 修改已提交的邮箱和用户信息

    实际过程中有的时候本地配置信息邮箱有误,导致git commit 提交作者的信息有误,这个时候就需要进行修改

    程序手艺人
  • 修改Git全部Commit提交记录的用户名Name和邮箱Email

    这两天好不容易有空提交一下开源代码了,结果在公司提交的代码有记录,但是没有绿色,延迟?真的要凉

    沈唁
  • git commit 新修改的内容 添加到上次提交中 减少提交的日志

    有时候提交过一次记录只有,又修改了一次,仅仅是改动一些较少的内容,可以使用git commit --amend. 添加到上次提交过程中;

    xuyaowen
  • Git清理commit中历史提交的大文件

    du是linux 的基础命令,很多用法,详情自己去查找其他文档。 因为git的历史文件都是存在一个文件里的,我们使用下面命令可以找出排名前五的文件

    华创信息技术
  • 回滚 Git 提交到 GitHub 的 commit 记录

    在执行上述命令的时候,可能会提示本地的版本落后于远端的版本,因此我们还需要在上述命令中加上--force参数:

    CG国斌
  • git 修改commit日期为之前的日期

    我在之前修改了一个文件,但是没有commit,现在我想要commit,日期为那天的日期 git 修改日期的方法很简单,因为有一个命令--date 可以设置 gi...

    林德熙
  • git 修改commit日期为之前的日期

    我在之前修改了一个文件,但是没有commit,现在我想要commit,日期为那天的日期 git 修改日期的方法很简单,因为有一个命令--date 可以设置 gi...

    林德熙
  • [译] 分割一个已存在的 git commit

    原文:https://codewithhugo.com/split-an-existing-git-commit/

    江米小枣
  • 批量修改log中的提交信息

    事情的起因是这样的:迷恋的谷歌的我最近申请了一个新的 google 邮箱。然后果断在 github 上更新了邮箱地址,并且删除了之前的 163 等国内邮箱。

    心谭博客
  • 如何优雅的编写git的提交信息

    在公司的日常工作当中或者个人的开源项目,将代码提交到代码库时。都会遇到下面这样的对话框,通常都会随便写点内容在里面。

    JusterZhu
  • git忽略本地已存在文件的修改[通俗易懂]

    git仓库提交总有一些文件不想提交到远程,而git忽略的文件也有但是不能动 因为.gitignore 文件的东西变得话 会提交到仓库 我本地一些confi...

    全栈程序员站长
  • 如何修改Github已经提交的commit里的提交者用户名和提交者邮箱

    https://github.com/SAP/spartacus/commit/4d1de586e32ac635d78ee2ad751338720fb3fb1f...

    Jerry Wang

扫码关注腾讯云开发者

领取腾讯云代金券