Git 是目前世界上最先进的分布式版本控制系统之一,使用广泛。使用 Git 的过程中,我们经常会遇到修改提交历史的需求,比如:我们提交了一个不够完善或者有错误的代码,需要对其进行修改和完善,此时就需要用到 git commit --amend 命令。
一、修复上一次提交
Git commit --amend 命令可以用来修复上一次的提交,我们可以立即将上一次提交的内容修改后进行重新提交。
git commit --amend
执行该命令后,Git 会进入 Vim 编辑器,并将当前代码库的提交信息填入到 Vim 编辑器中,输入新的提交信息后,执行 :wq 命令即可完成对上一次提交的修改。如果不做任何修改,直接使用 :wq 命令保存的话,相当于什么也没做。
二、修改最近一次提交的文件
当我们的代码库历史提交记录中不止一个提交时,git commit --amend 命令还可以用来修改最近一次提交的文件。
# 修改文件,并将其添加到暂存区
git add file_name
# 执行修改上一次提交
git commit --amend --no-edit
这样可以达到修改提交信息的目的,而不需要输入修改指令 Vim 命令。
三、在本地合并多个 commit 信息
当我们为一个特性分支进行多次提交,合并后的提交历史看起来可能会比较乱,此时可以使用 git commit --amend 命令将多个提交整合到一起。
# 合并当前特性分支前五次提交,并且不修改任何提交信息
git rebase -i HEAD~5
# 将第二次提交至第五次提交 pick 改为 squash
# 保存并退出 Vim
# 修改合并后的提交信息
git commit --amend
# 删除多余的提交信息
git rebase --continue
这样我们就整合了前五次提交记录,并将其合并为一条提交记录。使用 git show 命令查看提交记录详情时可以看到多个提交记录信息被整合到了一起。
四、注意事项
1、仅在本地分支使用
修改历史是 Git 远程仓库的重要组成部分,但是修改历史可能会破坏 Git 仓库的完整性和可靠性,所以我们不应该修改与项目合作者分享或者已经 push 到 Git 服务器上的任何提交记录。因此,git commit --amend 命令仅在本地分支使用,不应该用于与他人协作的多人开发。
2、不要滥用
由于 git commit --amend 命令会改变提交历史,因此我们不应该滥用该命令。合理使用该命令可以使我们的提交历史更加清晰和可读,而滥用该命令会导致提交历史杂乱无章,使我们难以追溯提交历史。