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不会被废弃。