git commit的--amend选项

Posted chaoguo1234

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了git commit的--amend选项相关的知识,希望对你有一定的参考价值。

    git commit --amend常常用来修改某个branch上最顶端的commit,大多数情况下,这个命令给人的感觉是用新的commit替换了原来的commit。git commit --amend与下面的语句等价:

git reset --soft HEAD^  //将branch的头指针向前移动一个commit,--soft选项使得index和workspace tree的内容保持移动之前不变

...do something...

git commit -c ORIG_HEAD  //-c选项使得新提交的log message重用ORIG_HEAD指向的commit使用的log message,但允许用户编辑

 

举个例子,假设master branch上的提交历史如下图:

技术分享

运行git commit --amend时,过程如下:

技术分享

图中有阴影的commit就是master指针移动之前指向的commit,当git commit --amend运行结束后,这时因为没有任何其他branch指向有阴影的commit,该commit会被废弃。但是如果是下面的情况:

技术分享

运行git commit --amend的过程如下:

技术分享

上图中加阴影的commit仍然是master指针移动之前指向的commit,但是由于该commit还被alt branch引用,因此这个commit不会被废弃。

 

以上是关于git commit的--amend选项的主要内容,如果未能解决你的问题,请参考以下文章

git commit --amend用法(摘抄)

如何跳过“git commit --amend”中的提交消息步骤? [复制]

git commit 之后,撤销操作

git 修改已提交的注释

Git——刚刚提交的代码,发现写错了怎么办?

使用 Vim 进行 git commit --amend [重复]