zoukankan      html  css  js  c++  java
  • git reset 与 git revert的区别?

    一,git reset的功能:

          该命令修改HEAD的位置,即将HEAD指向的位置改变为之前存在的某个版本,

          说明:

          修改后,push到远程仓库时需要使用“git push -f”提交更改

          原因:因为我们本地库HEAD指向的版本比远程库的要旧

    说明:架构森林是一个专注架构的博客,地址:https://www.cnblogs.com/architectforest

             对应的源码可以访问这里获取: https://github.com/liuhongdi/

     说明:作者:刘宏缔 邮箱: 371125307@qq.com

    二,git revert的功能:

          git revert与git reset不同,它复制了一个目标版本(某个想要回退到的历史版本)加在当前分支的最前端。

          而git reset是HEAD指针跳到目标版本,但将跳过的版本丢弃掉了。(git log已经看不到,git reflog还是可以看到的)

    三,git reset 的例子:

         

    root@kubuntu:/data/git/clog# git log --pretty=oneline
    6a1ea30d1f70c747d9f2bb6282b1f6b2e75ccf05 (HEAD
    -> dev) e 89a1b44dc8c491742382f0cb7d528a5652023ee9 d c1d316f17dcbe0c8ee42361ffaaa19fa7c8ff616 (master) c 31b4f3173bd46947a671db7a174b4044aca617c1 b cda25664a84b8a27fedbaf436e302781e51fc0e9 (tag: a) a 7f5d3f71a244920c390b761921687adafcdf8b45 初始化文件
    root@kubuntu:
    /data/git/clog# git reset --hard 31b4f3173bd46947a671db7a174b4044aca617c1 HEAD 现在位于 31b4f31 b
    root@kubuntu:
    /data/git/clog# git log --pretty=oneline 31b4f3173bd46947a671db7a174b4044aca617c1 (HEAD -> dev) b
    cda25664a84b8a27fedbaf436e302781e51fc0e9 (tag: a) a 7f5d3f71a244920c390b761921687adafcdf8b45 初始化文件

    四,git revert的例子:

    当使用revert反做到某个commit时,可能会产生冲突,

    这时需要手动解决冲突

    看例子:

    root@kubuntu:/data/git/clog# git revert -n 31b4f3173bd46947a671db7a174b4044aca617c1
    error: 不能还原 31b4f31... b
    提示:冲突解决完毕后,用 'git add <路径>''git rm <路径>'
    提示:命令标记修正后的文件

    解决冲突完成后,commit即可:

    root@kubuntu:/data/git/clog# git add -A
    root@kubuntu:/data/git/clog# git commit -m "解决冲突";
    [dev a5aea62] 解决冲突
     1 file changed, 3 deletions(-)

    五,git reset --hard与 git reset --soft的区别?

    --hard : 回退版本库,暂存区,工作区。(因此我们修改过的代码就没了,需要谨慎使用)

    --mixed: 回退版本库,暂存区。(--mixed为git reset的默认参数,即当任何参数都不加的时候的参数)

    --soft: 回退版本库。

    说明:打开reset的帮助文档即可了解:

    root@kubuntu:/data/git/clog# git reset -h
    用法:git reset [--mixed | --soft | --hard | --merge | --keep] [-q] [<提交>]
       或:git reset [-q] [<树或提交>] [--] <路径>...
       或:git reset --patch [<树或提交>] [--] [<路径>...]
        -q, --quiet           安静模式,只报告错误
        --mixed               重置 HEAD 和索引
        --soft                只重置 HEAD
        --hard                重置 HEAD、索引和工作区
        --merge               重置 HEAD、索引和工作区
        --keep                重置 HEAD 但保存本地变更
        --recurse-submodules[=<reset>]
                              control recursive updating of submodules
        -p, --patch           交互式挑选数据块
        -N, --intent-to-add   将删除的路径标记为稍后添加
  • 相关阅读:
    Java3D实例应用载入VRML模型
    Tomcat数据库连接池的配置方法总结
    WebGL学习笔记使用3D引擎threeJS实现星空粒子移动
    mybatis应用实例学习
    springmvc 实例应用
    springmvc定制伪REST风格及JSR303Bean校验整合
    SpringMVC中应用Ajax异步通讯
    Java3D实例应用载入3ds 模型
    Device Mutipath参数设置
    Nginx+FastCGI+Python
  • 原文地址:https://www.cnblogs.com/architectforest/p/12323391.html
Copyright © 2011-2022 走看看