git revert和git reset的区别

发布网友 发布时间:2022-04-26 12:01

我来回答

2个回答

热心网友 时间:2022-06-28 03:53

git revert 放弃某次提交

git revert 之前的提交仍会保留在git log中,而此次撤销会做为一次新的提交。

git reset 是回滚到某次提交

git reset --soft

此次提交之后的修改会被退回到暂存区

git reset --hard

此次提交之后的修改不做任何保留,git status干净的工作区。

git rebase 当两个分支不在一条直线上,需要执行merge操作时,使用该命令操作。

该命令执行时极有可能显示merge失败,如下图1,使用git
diff命令查看冲突内容,手动

修改冲突,git add filename,表示冲突已解决,再执行git
rebase --continue,继续rebase。

图1


git rebase 执行结果如下图2

图2


热心网友 时间:2022-06-28 03:53

git revert 是撤销某次操作,此次操作之前的commit都会被保留

git reset 是撤销某次提交,但是此次之后的修改都会被退回到暂存区

具体一个例子,假设有三个commit, git st:

commit3: add test3.c

commit2: add test2.c

commit1: add test1.c

当执行git revert HEAD~1时, commit2被撤销了

git log可以看到:

commit1:add test1.c

commit3:add test3.c

git status 没有任何变化

如果换做执行git reset --soft(默认) HEAD~1后,运行git log

commit2: add test2.c

commit1: add test1.c

运行git status, 则test3.c处于暂存区,准备提交。

如果换做执行git reset --hard HEAD~1后,

显示:HEAD is now at commit2,运行git log

commit2: add test2.c

commit1: add test1.c

运行git st, 没有任何变化

另外:

git revert <commit log string>是撤消该commit,作为一个新的commit。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com