git reset 和 git revert 命令

一、git reset 

该命令有三种方式:

1. git reset –mixed

此为默认方式,不带任何参数的 git reset 即使用这种方式,它回退到某个版本,只保留源码,回退 commit 和 index 信息

比如,本地提交信息如下

git reset 和 git revert 命令_第1张图片

执行 git reset --mixed HEAD^ 命令以后,本地提交信息如下

git reset 和 git revert 命令_第2张图片

本地的源文件处于已修改待保存状态

git reset 和 git revert 命令_第3张图片

2. git reset –soft

回退到某个版本,只回退了commit 的信息,不会恢复到 index file 一级。如果还要提交,直接commit即可

git reset 和 git revert 命令_第4张图片

3. git reset –hard

彻底回退到某个版本,本地的源码也会变为上一个版本的内容

git reset 和 git revert 命令_第5张图片

二、git revert

git revert 是用一个新提交来消除一个历史提交所做的修改


git reset 和 git revert 命令_第6张图片
git reset 和 git revert 命令_第7张图片
git reset 和 git revert 命令_第8张图片

三、git reset 和 git revert 的区别

git revert 是用一次新的 commit 来回滚之前的 commit,git reset 是直接删除指定的 commit,看似达到的效果是一样的,其实完全不同。

第一:如果你已经 push 到线上代码库,reset 删除指定 commit 以后,你 git push 可能导致一大堆冲突,但是 revert 并不会。

第二:在日后现有分支和历史分支需要合并的时候,reset 恢复部分的代码依然会出现在历史分支里,但是 revert 方向提交的commit 并不会出现在历史分支里。

第三:reset 是在正常的 commit 历史中,删除了指定的 commit,这时 HEAD 是向后移动了,而 revert 是在正常的 commit 历史中再 commit 一次,只不过是反向提交,他的 HEAD 是一直向前的。

你可能感兴趣的:(git reset 和 git revert 命令)