git revert和git reset的区别详解
gitrevert和gitreset的区别
gitrevert是生成一个新的提交来撤销某次提交,此次提交之前的commit都会被保留
gitreset是回到某次提交,提交及之前的commit都会被保留,但是此次之后的修改都会被退回到暂存区
具体一个例子,假设有三个commit,gitst:
commit3:addtest3.c
commit2:addtest2.c
commit1:addtest1.c
当执行gitrevertHEAD~1时,commit2被撤销了
gitlog可以看到:
revert"commit2":thisrevertscommit5fe21s2...
commit3:addtest3.c
commit2:addtest2.c
commit1:addtest1.c
gitstatus没有任何变化
如果换做执行gitreset--soft(默认)HEAD~1后,运行gitlog
commit2:addtest2.c
commit1:addtest1.c
运行gitstatus,则test3.c处于暂存区,准备提交。
如果换做执行gitreset--hardHEAD~1后,
显示:HEADisnowatcommit2,运行gitlog
commit2:addtest2.c
commit1:addtest1.c
运行gitst,没有任何变化
另外:
gitrevert
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!