美文网首页
Exe.3 task 3rd

Exe.3 task 3rd

作者: 饥人谷_LS | 来源:发表于2018-04-10 15:43 被阅读0次

    关于git revert 、git reset --hard 与 git reset --soft 之间的区别与作用

    git revert 与 git reset

    1.git revert 是生成一个新的提交来撤销某次提交,此次提交之前的 commit 都会被保留;
    2.git reset 是用来将当前 branch 重置到另一个 commit 的,即是回到某次提交,提交之前的 commit 都会被保留,但是此次之后的修改都会被退回到暂存区;
    3.二者都可以在当项目需要回滚时使用,只是 revert 是将之前的提交翻转后作为一次新的提交,reset commit_id 是回滚到该 commit_id 下,该 commit_id 之后的提交都会删除。

    git reset --hard 与 git reset --soft

    1.git reset --soft 是回退到某个版本,只回退了 commit 的信息,不会恢复到 index file 一级。如果还要提交,直接 commit 即可,即 index 和 working directory 中的内容不作任何改变,仅仅把 HEAD 指向 <commit> 。这个模式的效果是执行完毕后,自从 <commit> 以来的所有改变都会显示在 git status 的 “Changes to be committed” 中;
    2.git reset --hard 是彻底回退到某个版本,本地的源码也会变为上一个版本的内容,即相当于重设 index 和 working directory ,自从 <commit> 以来在 working directory 中的任何改变都被丢弃,并把 HEAD 指向 <commit>;
    3.二者都是 reset 命令参数的一种,区别是 soft 不进行暂存区和工作区的覆盖,而 hard 会将暂存区、工作区全部用指定提交版本的目录书替换掉。

    以下是 git reset --hard 的 demo:
    1.首先,我们通过 git log --pretty=oneline 命令知道从最近一次到以往的提交情况:


    作业1任务3:原三次提交(简).jpg

    2.然后,我们通过 git reset hard HEAD~1 命令回退到前一次提交:


    git reset hard HEAD~1.jpg

    3.通过 cat 命令,我们可以知道现在已经成功回退到前一次提交“222222”:


    reset hard vim.jpg

    4.通过 git reflog 命令,我们可以得知最近一次提交版本号为 6d3be6c:


    git reflog.jpg 5.最后,通过 git reset --hard 6d3be6c 命令,我们可以恢复到最近一次提交: git reset --hard 6d3be6c.jpg

    相关文章

      网友评论

          本文标题:Exe.3 task 3rd

          本文链接:https://www.haomeiwen.com/subject/ifcnhftx.html