对于已经 git commit,但还未 git push 到远程仓库的提交信息进行修改。主要分为如下两类

一、 对于刚刚提交的信息进行修改,此时修改的commit为最后一次提交的内容:

可修改提交的messageauthor,如修改下图所提交的信息和作者

修改git对应的python版本 git 怎么修改commit信息_远程仓库

# 1. 只修改提交的 message,如将已提交的message修改为 "B01"
  git commit --amend --message="B01"

# 2. 只修改提交的 author 信息,如将author设置为 "Jeff <Jeff@163.com>" ,之后会进入到 vim编辑message页面(加 --no-edit 则不会进入vim)
  git commit --amend --author="Jeff <Jeff@163.com>" --no-edit

# 3. 一条命令行来同时修改已提交的author 和 message
  git commit --amend --author="Jeffxu <Jeffxu@163.com>"  --amend --message="A02"

二、修改历史多次提交的 commit 信息

可以使用 git rebase -i 命令来对多次提交的历史 commit 内容进行修改。

如修改下图中 "A02"~"A05" 这四次commit的信息。

修改git对应的python版本 git 怎么修改commit信息_远程仓库_02

  1. git rebase -i 将以Vim编辑器来显示所有已经 commit ,但还未 push 到远程仓库中的内容,如下图中"pick ...." 所对应的四条
  2. 将需要修改的那条 commit 所对应的 "pick" 修改为 "edit",保存并退出Vim编辑器,修改后如下图所示:
  3. 执行 git commit --amend --author="<author info>"git commit --amend --message="<edit message>" 来修改对应的author 或者 message。与最上面修改最后一次commit方式类似。
# 1. 只是修改author信息,随后会进入到编辑message的页面,如不需要修改message,可直接退出vim编辑器(或末尾加 --no-edit)
  git commit --amend --author="<author info>" --no-edit
# 2. 只是修改message信息
  git commit --amend --message="<edit message>"
# 3. 同时修改message 和author
  git commit --amend --message="<edit message>" --author="<author info>"
  1. 修改好对应的内容后,执行 git rebase --continue 来完成该笔 commit 的修改,同时会自动进入到下一笔 commit的编辑位置,如下图显示当前修改的是第几笔的commit 内容
  2. 继续执行类似于步骤3,4的 git commit --amendgit rebase --continue 指令来修改对应的内容,直到所有的 commit全部修改完成。
  3. 可以执行 skip 跳过当前的commit修改, abort 放弃所有的修改,包含之前的修改
# 1. 跳过对当前的这笔 commit 进行修改
  git rebase --skip
# 2. 放弃对所有 commit的修改,之前已完成修改的内容也全部会被丢弃
  git rebase --abort

【参考资料】

  1. How to change the commit author for a single commit?
  2. Git 修改已提交 commit 的信息
  3. git-rebase