1. git修改指定提交信息
当我们在使用Git提交代码时,有时会发现自己提交的信息有误或者不够详细。这时候我们需要修改提交信息,下面就来介绍一下如何在Git中修改指定提交信息。
1.1 使用git rebase命令
Git 提供了一个非常强大的命令 git rebase,修改提交信息就可以用到它。
下面我们来看一下使用git rebase命令修改提交信息的具体步骤:
使用git log命令查看需要修改的提交的哈希值,比如我们要修改最近的一次提交:
git log
使用该命令可以看到类似下面的信息:
commit 41aa0b763bab0d1d34fe8017af6646f9c2269685 (HEAD -> master)
Author: xxxxxxxx
Date: Wed Jun 30 11:23:32 2021 +0800
fix: 修复了xxbug
其中的哈希值为41aa0b763bab0d1d34fe8017af6646f9c2269685,记住这个值,我们接下来会使用它。
使用git rebase命令进行交互式 rebase:
git rebase -i 41aa0b763bab0d1d34fe8017af6646f9c2269685^
注意,这里的^符号不能省略,表示选择要修改的提交的上一个提交。
执行该命令后会弹出一个编辑器,如下示例:
pick 41aa0b76 fix: 修复了xxbug
# Rebase e22376de..41aa0b76 onto e22376de (1 command)
#
# Commands:
# p, pick = use commit
# r, reword = use commit, but edit the commit message
# e, edit = use commit, but stop for amending
# s, squash = use commit, but meld into previous commit
# f, fixup = like "squash", but discard this commit's log message
# x, exec = run command (the rest of the line) using shell
#
# If you remove a line here THAT COMMIT WILL BE LOST.
# However, if you remove everything, the rebase will be aborted.
在这里将fix改成r或reword,即表示要对该提交进行修改并提交,修改后的提交信息会让你编辑:
reword 41aa0b76 fix: 修复了xxbug
# Rebase e22376de..41aa0b76 onto e22376de (1 command)
#
# Commands:
# p, pick = use commit
# r, reword = use commit, but edit the commit message
# e, edit = use commit, but stop for amending
# s, squash = use commit, but meld into previous commit
# f, fixup = like "squash", but discard this commit's log message
# x, exec = run command (the rest of the line) using shell
#
# If you remove a line here THAT COMMIT WILL BE LOST.
# However, if you remove everything, the rebase will be aborted.
编辑并保存提交信息
现在,我们就可以对该次提交的信息进行修改,并保存退出编辑器。
使用git log命令检查修改后的提交信息是否生效
git log
可以看到已经对该次提交的信息进行了修改。
1.2 使用git commit --amend命令
如果只是对最近一次提交进行修改,可以使用 git commit --amend 命令。
下面我们来看一下使用 git commit --amend 命令修改最近一次提交信息的具体步骤:
使用git log命令查看需要修改的提交的哈希值,选择最近一次提交,例如:
git log -1
使用该命令可以看到最近一次提交的相关信息,如下所示:
commit 41aa0b763bab0d1d34fe8017af6646f9c2269685
Author: xxxxxxxx
Date: Wed May 5 10:13:56 2021 +0800
feat: 新增了xx功能
其中的哈希值为41aa0b763bab0d1d34fe8017af6646f9c2269685,记住这个值。
使用git commit --amend命令进行修改:
git commit --amend
执行该命令后会弹出一个编辑器,我们可以对提交信息进行修改:
feat: 新增了xx功能
我又新增了一些内容
编辑并保存提交信息
现在,我们就可以对该次提交的信息进行修改,并保存退出编辑器。
使用git log命令检查修改后的提交信息是否生效
git log -1
可以看到已经对该次提交的信息进行了修改。
2. git修改多个提交信息
如果我们需要对多个提交信息进行修改,可以使用以下方法:
2.1 使用git rebase -i命令
使用 git rebase -i 命令来操作,与修改单个提交信息的操作相同。我们可以选择需要修改的提交信息,然后用 r 或 reword 命令进行修改。
2.2 使用git filter-branch命令
除了使用 git rebase -i 命令,我们还可以使用 git filter-branch 命令来修改多个提交信息。
下面我们来看一下使用 git filter-branch 命令修改多个提交信息的具体步骤:
使用git log命令查看需要修改的提交的哈希值,选择需要修改的提交区间,例如:
git log --pretty=format:"%h %s" --graph
使用该命令可以看到一段提交记录,例如:
* e522d6b fix: 修复了xxbug
* 41aa0b7 feat: 新增了xx功能
* ce3edf4 docs: 增加了xx文档
* 137ad11 init
我们可以使用 git filter-branch 命令对所有提交信息进行修改,例如对所有提交都添加一个前缀(如下所示):
git filter-branch --msg-filter 'echo "[fix] " && cat'
使用git log命令检查修改后的提交信息是否生效
git log --pretty=format:"%h %s" --graph
可以看到所有的提交信息都添加了前缀 [fix]。
3. 总结
以上就是关于如何在 Git 中修改指定提交信息的两种方法,无论是修改单个提交信息还是多个提交信息,都可以使用以上的方法轻松完成。在修改提交信息时,我们需要注意保持Git仓库中的历史记录的完整性。
以上方法虽然操作简单,但在特殊情况下仍需小心,因此我们应该谨慎使用,建议在修改提交信息前先备份源代码。