git rebase -i

使用 Git 好几年了,还一直没有考虑过类似 commit 以后还要修改它的问题,最近遇到了,发现是有现成方案的。

最简单的方法是 git submit –amend ,Git 目录中敲入这个命令的结果是可以直接修改当前最后一条未 push 的 commit 的注释信息,:wq 保存退出即可生效。如果有其他的需求,可以在缓存区(也就是没有commit的情况下)add 一些文件,再执行 git submit –amend ,可以将后续修改合并到之前的 commit 中。

这是一个比较简单的方法,但是还不足以处理很多复杂的情况,比如当你想要合并多个 commit 或者追溯到前面几个 commit 的时候,就需要用到 git 变基了(似乎混进了一些奇怪的东西)。使用以下语句即可:

比如想修改 master 下最近3个commit中的一个或者几个,可以输入:

然后你就会看到类似这样的东西(先盗一张别人的图吧):

其中,pick 就是默认操作,把 pick 改为 e,就可以对这个 commit 的注释信息进行修改,把多个 pick 改为 s,就可以合并这几个 commit。
修改完毕后,:wq 退出,输入命令 git rebase –continue,修改完毕。

参考资料:
https://www.atlassian.com/git/tutorial/rewriting-git-history#!rebase-i
http://git-scm.com/docs/git-rebase
https://help.github.com/articles/about-git-rebase
https://www.kernel.org/pub/software/scm/git/docs/git-rebase.html

No Comment.