git commit --amend
你在使用git的过程中会不会遇到这么一种情况:刚刚进行了一个git commit(提交),但是突然发现上次提交中有个错误,所以要撤销上一次的提交,重新修改后再提交。也许你会说很简单,直接git reset HEAD~1不就行了吗?的确,但是我们这里要说的是git commit --amend。下面就结合实例说明一下:
1.新建一个目录git-test,初始化一下仓库,做一次简单的提交:
mkdir git-test
cd git-test/
git init
echo 1 > test
git add .
git commit -am "init"
2.这个时候我们发现上次提交的内容中有个错误(‘1’应该是‘2’),需要修改后重新提交:
echo 2 > test
git add test
3.这时候我们来用git status看一下:
linux-geek:/home/tmp/git-test # git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: test
#
4.如果这个时候我们键入git commit --amend,会出现什么情况呢?
linux-geek:/home/tmp/git-test # git commit --amend -m "init"
[master fffa52a] init
1 files changed, 1 insertions(+), 0 deletions(-)
create mode 100644 test
这样子会把刚才
暂存区里面的内容替换前一次提交里的内容
而不是
作为一次新的提交。我们来看一下:
linux-geek:/home/tmp/git-test # git log
commit fffa52a68b9ccda6ff654573988ccc713280212c
Author: zhuqinggooogle <zhuqinggooogle@gmail.com>
Date: Fri May 9 10:34:39 2014 +0800
init
这里只有一次提交记录。我们再来看一下提交后的内容是不是我们修改过的:
linux-geek:/home/tmp/git-test # git show HEAD:./test
2
的确是的,毫无疑问。