git revert和git reset的区别

git revert 是撤销某次操作,此次操作之前的commit都会被保留git reset 是撤销某次提交,但是此次之后的修改都会被退回到暂存区具体一个例子,假设有三个commit, git st:commit3: add test3.ccommit2: add test2.ccommit1: add test1.c当执行git revert HEAD~1时, commit2被撤销了git log可以看到:commit1:add test1.ccommit3:add test3.cgit status 没有任何变化如果换做执行git reset –soft(默认) HEAD~1后,运行git logcommit2: add test2.ccommit1: add test1.c运行git status, 则test3.c处于暂存区,准备提交。如果换做执行git reset –hard HEAD~1后,显示:HEAD is now at commit2,运行git logcommit2: add test2.ccommit1: add test1.c运行git st, 没有任何变化另外:git revert <commit log string>是撤消该commit,作为一个新的commit。