您的位置:首页 > 其它

git revert、git reset和git checkout区别精华版

2016-11-19 22:35 537 查看
1、git revert

(1)git revert
 命令通过创建一次新的 
commit
 来撤销一次 
commit
 所做出的修改。这种撤销的方式是安全的,因为它并不修改
commitm
history
, 比如下边的命令将会查出倒数第二次(即当前commit的往前一次)提交的修改,并创建一个新的提交,用于撤销当前提交的上一次 
commit)
。(总之就是一句话:有了commit
id就可以回到某个版本 git reset --hard 3628164)

git checkout hotfix

git revert HEAD~2

(2)git revert 操作之后的commit都会被保留。

具体一个例子,假设有三个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 st 没有任何变化

commit3保留了下来
2、git reset
git
reset 操作之后的commit都不会被保留。

下面的命令会让 `hotfix` 分支回退两个 commits

git checkout hotfix

git reset HEAD~2
--soft: staged snapshot 和 working directory 都未被改变 (建议在命令行执行后,再输入 git status 查看状态)

--mixed: staged snapshot 被更新, working directory 未被更改。【这是默认选项】(建议同上)

--hard: staged snapshot 和 working directory 都将回退。

对应着

git reset -soft :取消了commit  
git reset -mixed(默认) :取消了commit ,取消了add
git reset -hard :取消了commit ,取消了add,取消源文件修改
3、check out
(1)、用于切分支     git checkout hotfix

(2)、用于切到其他的commit ID        git checkout HEAD~2/[commit id]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: