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选项

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

git commit的--amend选项

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

git commit的--amend选项

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

git commit的--amend选项

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

 

相关文章:

  • 2021-11-29
  • 2022-02-19
  • 2021-10-28
  • 2021-09-19
  • 2021-06-22
  • 2021-05-28
  • 2022-12-23
猜你喜欢
  • 2022-02-02
  • 2021-06-06
  • 2022-12-23
  • 2021-07-24
  • 2021-07-18
  • 2021-08-13
  • 2021-11-07
相关资源
相似解决方案