您的位置:首页 > 其它

git revert 和 git reset

2015-12-15 22:47 232 查看
git revert

        撤销某次操作,而且会保留之前的commit,并且会把此次撤销作为最新的提交。

        eg:

              git revert HEAD                  撤销前一次 commit

              git revert HEAD^                撤销前前一次 commit

              git revert  commit              (commit 表示提交的版本编号,比如:fa042ce57ebbe5bb9c8db709f719cec2c58ee7ff)  撤销指定的版本,该次撤销也会作为一次提交进行保存
 
        git revert是提交一个新的版本,将需要revert的版本的内容再反向修改回去,版本会递增,不影响之前提交的内容。

git reset

        如果想把已经add到stage区中的文件撤回时,则可以使用该命令。同时在你git add 完成后,也会有相关的提示:

        

        

        git reset  [--hard|soft|mixed|merge|keep] [<commit>或HEAD]:将当前分支重置(reset)
到指定的<commit> 或 HEAD (如果不显示指定commit,默认是HEAD,即最新的一次提交)。并且根据[mode]有可能更新stage和 working directory。mode的取值可以是hard、soft、mixed、merged、keep。下面来详细说明每种模式的意义和效果。

A)  --hard :重置stage区和working directory。从<commit>以来,在working directory中的任何改变都被丢弃,并把HEAD指向<commit>。

      eq:git reset --hard cc53e545224340ea7135040933258fb4b8ad4431

               HEAD 指向版本cc53e545224340ea7135040933258fb4b8ad4431。

     

      git reset --hard HEAD^    退回到上一个版本 (working directory的修改全部丢弃)

       HEAD      表示当前版本

       HEAD^     表示上一个版本

B) --soft :stage和working directory中的内容不作任何改变,仅仅把HEAD指向<commit>。这个模式的效果是,执行完毕后,自从<commit>以来的所有改变都会重新处于暂存区(stage),准备提交的状态,此时使用git commit 就会提交它。 

C) --mixed:默认模式即当不显示告知git reset模式时,会使用mixed模式。这个模式的效果是,working directory中文件的修改都会被保留,文件的状态处于执行git add 之前的状态(Untracked files)。

总结:

git revert 是撤销某次操作,此次操作之前的commit都会被保留
git reset    是撤销某次提交,但是此次之后的修改都会被退回到暂存区,git
log 没有之前提交的记录
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: