标签:
如果仅仅想修改刚刚的提交(最后一个提交),可以使用git commit --amend
修改最后一次提交。使用该命令时会弹出对话框(windows下)或者vim编辑界面(linux下)。在弹出界面进行修改,保存后即可用新的提交信息进行提交了。该命令只能修改提交备注信息,对于其他信息无法修改。
该命令会回滚最后一个提交,执行一次表示回滚最近一次提交。然后改动会进入暂存区,可以使用git commit -m
继续提交即可。
上面两个命令都是针对最近一次提交,如果想同时修改多个提交,怎么办? git rebase -i 提交号
(修改该提交号之后的所有提交) 或 git rebase -i HEAD~3
(修改最近三次的提交)。使用了该命令后,会将所有需要修改的commit的提交信息按照时间先后顺序列出来。示例如下:
pick 52e5cd9 .test1
pick 76dfaf3 .test2
pick d178473 .test3
# Rebase 080e4be..d178473 onto 080e4be
#
# 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
#
# These lines can be re-ordered; they are executed from top to bottom.
#
# If you remove a line here THAT COMMIT WILL BE LOST.
#
# However, if you remove everything, the rebase will be aborted.
#
# Note that empty commits are commented out
我们只需要编辑这段脚本即可,git提供了6个命令,具体如下:
git commit --amend
来修改该命令能对该仓库的所有提交进行修改,功能非常强大。比如批量修改提交者的信息,如修改所有提交者为zhangsan提交信息为gavincook,邮箱为xx@qq.com,我们可以使用如下命令:
git filter-branch --commit-filter ‘
if [ "$GIT_AUTHOR_NAME" = "zhangsan" ];
then
GIT_AUTHOR_NAME="GavinCook";
GIT_AUTHOR_EMAIL="xx@qq.com";
git commit-tree "$@";
else
git commit-tree "$@";
fi‘ HEAD
git提供了很多filter类型,更多例子参见:例子
标签:
原文地址:http://blog.csdn.net/gavincook/article/details/51153041