git修改commit相关信息

最近在使用git的时候,经常性的需要执行修改commit信息,合并commit等操作,所以在此做一下总结。

修改commit相关信息

修改commit信息

在使用git提交过后,想更改commit信息的话,可以使用

git rebase -i HEAD~n

n的值由你想修改的commit在git log中所处的位置所决定。
在执行rebase之前,需要先执行git stash暂存当前的文件修改,rebase结束后执行git stash pop恢复现场
例如:

如果我想修改hash为b5d486c8aa7b07c398332026ce7760e8558acbd6这条提交记录的commit信息,可以执行命令:

git rebase -i HEAD~2


进入Rebase文件后,找到要修改的commit记录前,将pick修改为edit,保存退出。
然后执行命令:

git commit --amend

修改commit信息,在修改保存完成后,执行

git rebase --continue

进行合并。此时执行git log查看最新的提交记录,发现hash为b5d486c8aa7b07c398332026ce7760e8558acbd6的提交其commit信息已经改变。

修改author信息

如果全局或本地某个仓库下的user.name、user.eamil存在问题,在我们提交过后,可以通过git命令进行修正。

git commit --amend --author='Your Name <you@example.com>'

合并commit

在开发过程中,经常需要将多条提交记录合并成一条,使得git历史明确清晰。
git的commit合并,只允许向前合并,不允许向后合并或跨记录合并。

合并的过程与修改commit信息相似,只不过在编辑Rebase文件的时候,需要在edit的地方填写squash

修改合并后的commit信息,合并记录不用执行git commit --amendgit rebase --continue

如图会将两条commit message进行合并

推送分支

在修改完成后,我们需要保持本地和远程仓库同步,单独执行git push origin ${branch}时,会提示当前提交存在冲突。

git push origin +${branch}:${branch}

需要执行以上命令,将本地分支强制推到远程分支上。

本文使用CC BY-NA-SA 4.0协议许可
本文链接:http://404-notfound.com/git修改commit相关信息/