zoukankan      html  css  js  c++  java
  • 【转】git reset, revert, checkout介绍及区别

    git reset, revert, checkout介绍及区别

    原文链接:http://maiyang.github.io/git/2016/04/21/git-reset-checkout-revert

    不知道大家对于git reset, revert, checkout几个命令了解不?

    在我们日常使用git时,时常被用到,我结合我自己的经验简单介绍一下,如果有说的不对,请及时纠正。

    首先,其实这3个命令的主要功能就是撤销(undo)。

    基本概念

    仓库

    git 仓库有三个组成(components),分别是:working directory(代码仓库),staged snapshot(快照:add的缓存库),commit history(commit历史)。

    git checkout

    git checkout hotfix 切换到hotfix分支,仅仅是将HEAD移到一个新的分支(hotfix)上,然后更新工作目录。

    因为这可能覆盖你本地修改,所以git强制你提交或缓存工作目录的所有更改,不然checkout的时候这些更改都会丢失。

    git checkout HEAD~3 快速查看项目HEAD之前的第3个版本,这个对于我们查看之前的变更很有帮助的。

    “git checkout – ..." to discard changes in working directory

    作用于working directory

    git reset

    git reset 是撤销某次提交,但是此次之后的修改都会被退回到暂存区。

    1. git reset HEAD 回退所有内容到上一个版本
    2. git reset 057d 回退到某个版本

    git revert

    Revert撤销一个提交的同时会创建一个新的提交。这是一个安全的方法,因为它不会重写提交历史。比如,下面的命令会找出倒数第二个提交,然后创建一个新的提交来撤销这些更改,然后把这个提交加入项目中。

    git revert HEAD~3:丢弃最近的三个commit,把状态恢复到最近的第四个commit,并且提交一个新的commit来记录这次改变。

    git reset 和git revert的区别

    1. git revert是用一次新的commit来回滚之前的commit,git reset是直接删除指定的commit。
    2. git reset 是把HEAD向后移动了一下,而git revert是HEAD继续前进
    3. 在回滚这一操作上看,虽然效果差不多,但是日后继续merge以前的老版本时有区别。因为git revert是用一次逆向的commit“中和”之前的提交,因此日后合并老的branch时,导致这部分改变不会再次出现,但是git reset是之间把某些commit在某个branch上删除,因而和老的branch再次merge时,这些被回滚的commit应该还会被引入。

    使用场景

    下表来源于延伸阅读(1)

    命令作用域常用情景
    git reset 提交层面 在私有分支上舍弃一些没有提交的更改
    git reset 文件层面 将文件从缓存区中移除
    git checkout 提交层面 切换分支或查看旧版本
    git checkout 文件层面 舍弃工作目录中的更改
    git revert 提交层面 在公共分支上回滚更改
    git revert 文件层面 (然而并没有)

  • 相关阅读:
    已设定选项readonly请加!强制执行
    Linux下NVIDIA显卡驱动安装方法
    C#使用MiniDump导出内存快照MiniDumper
    一些陈旧的注册表垃圾清理脚本:注册表冗余数据清理.reg
    脚本精灵一些脚本
    本地安装SonarQube Community8.1社区版进行代码质量管控
    spring redistemplate中使用setHashValueSerializer的设置hash值序列化方法
    spring-core-5.0.6.RELEASE-sources.jar中java源代码不全
    lombok插件/slf4j中字符串格式化
    light4j/light-4j一个轻量级的低延时、高吞吐量、内存占用量小的API平台
  • 原文地址:https://www.cnblogs.com/ryq2014/p/6379364.html
Copyright © 2011-2022 走看看