从字面上理解,重置是不管你做了多少次commit
,一次性就撤回去了。
撤销的话,只能撤销某一次的commit
。
譬如,
commit-1, commit-2, commit-3, commit-4
运行 git reset --HARD HEAD~2
重置到倒数第三个状态 ,那么还剩
commit-1, commit-2
运行 git revert HEAD~2
撤销倒数第二个状态, ,就是删除 commit-2
,那么还剩
commit-1,commit-3,commit-4
先这么理解一下,比较好懂
git reset -soft
: 取消了commit
git reset -mixed
(默认) : 取消了commit
,取消了add
git reset -hard
: 取消了commit
,取消了add
,取消源文件修改
git reset head~1
,这个相当于带了--mixed
参数, 这样已经修改的文件内容不会变,只不过commit
信息没 了,需要重新进行add
然后再commit
git reset --soft HEAD~1
, 这个相当于git reset --mixed
以后,又加上了 git add
,文件内容不会变,但是改动都放在了待提交区里面。 所以就可以用 git reset --soft [ID]
来合并几次commit
信息。
git reset --hard HEAD~1
,不仅重置了commit
信息,文件中已经修改的部分也会丢失。譬如想放弃所有更改干干净净回到某一个版本,就可以 git reset --hard HEAD