git reset、git checkout和git revert的区别

这三个git命令都是用来撤销代码仓库中的某些更改,而前两个命令不仅可以作用于commit层面,还可以作用于file层面
Reset
在commit层面,
reset通过移除当前分支的一些节点来实现版本回滚;

拥有mixed(默认)、soft、hard三个参数;
例如:$git reset <commit id> 使用mixed方式回退到指定版本
$git reset --soft <commit id> 使用soft方式回退到指定版本
$git reset --hard <commit id> 使用hard方式回退到指定版本

在file层面,
reset会将某个文件在指定节点的版本加到暂存区中,供下一次提交使用,并不会改动版本库中的节点
例如:$git reset <commit id> <path> 将<commit id>节点中的<path>文件加入到暂存区中

Checkout
在commit层面,
checkout的工作原理是改变HEAD指针的指向,通常用来切换分支和查看旧版本
例如:$git checkout <branch name> 将HEAD指针移动到指定分支的最后一个节点
$git checkout <commit id> 将HEAD指针移动到到指定节点
在file层面:
将某个文件在指定节点的版本加到暂存区和工作区中,并不会移动HEAD指针
例如:$git checkout <commit id> <path> 将<commit id>节点中的<path>文件加入到暂存区和工作区中

Revert
只能作用于commit层面,
revert通过新建一个节点来撤销之前的所有修改,但它们都会被保留
例如:$git revert HEAD 撤销当前版本,即新建一个上一版本的副本作为新节点

[参考] 代码回滚:git reset、git checkout和git revert区别和联系 http://www.cnblogs.com/houpeiyong/p/5890748.html

时间: 2024-10-16 00:30:16

git reset、git checkout和git revert的区别的相关文章

Git - reset和checkout的区别

参考 https://segmentfault.com/a/1190000006185954 1. Git的所有操作实际上是在操作这三个区域的状态(或内容) 2. 区别 checkout是会修改HEAD的指向,变更Index区域里的内容,修改Working Directory里的内容. 这看上去很像reset --hard,但和reset --hard相比有两个重要的差别 reset会把working directory里的所有内容都更新掉 checkout不会去修改你在Working Dire

git中reset和checkout的总结整理

各位看官好,git  reset和checkout是git中比较常用的两种方法,今天我想来总结一下reset和checkout的原理和架构. 一.reset的原理 二.reset的三种应用 三.checkout的原理 四.checkout的应用 1.reset的原理 1.1 关于git中三个区的说明 要说明git reset的原理,首先要简单说一下git的三个区和HEAD问题.在git中一共有三个区,分别是工作区,暂存区和提交区.其三者的对应关系是这样的: 工作区通过git add添加到暂存区,

git reset revert 回退回滚取消提交返回上一版本(转)

总有一天你会遇到下面的问题. (1)改完代码匆忙提交,上线发现有问题,怎么办? 赶紧回滚. (2)改完代码测试也没有问题,但是上线发现你的修改影响了之前运行正常的代码报错,必须回滚. 这些开发中很常见的问题,所以git的取消提交,回退甚至返回上一版本都是特别重要的. 大致分为下面2种情况: 1.没有push 这种情况发生在你的本地代码仓库,可能你add ,commit 以后发现代码有点问题,准备取消提交,用到下面命令 reset git reset [--soft | --mixed | --h

git reset and git checkout

git reset --hard <commit>: 1.替换引用的指向.引用指向新的提交ID; 2.替换暂存区.替换后,暂存区的内容和引用指向的文件夹树一致; 3.替换工作区.替换后,工作区的内容变得和暂存区一致,也和HEAD所指向的文件夹树内容同样. git reset --soft <commit>: 1.替换引用的指向.引用指向新的提交ID. 即仅仅更改引用的指向,不该编暂存区和工作区. git reset --mixed <commit>或git reset

git reset revert 回退回滚取消提交返回上一版本

git reset revert 回退回滚取消提交返回上一版本 总有一天你会遇到下面的问题. (1)改完代码匆忙提交,上线发现有问题,怎么办? 赶紧回滚. (2)改完代码测试也没有问题,但是上线发现你的修改影响了之前运行正常的代码报错,必须回滚. 这些开发中很常见的问题,所以git的取消提交,回退甚至返回上一版本都是特别重要的. 大致分为下面2种情况: 1.没有push 这种情况发生在你的本地代码仓库,可能你add ,commit 以后发现代码有点问题,准备取消提交,用到下面命令 reset g

[转] git reset简介

http://blog.csdn.net/hudashi/article/details/7664464 http://guibin.iteye.com/blog/1014369 http://hi.baidu.com/tiger_tnt/blog/item/a0464ffa6a8115d9b58f314d.html http://web.mit.edu/~mkgray/project/silk/root/afs/sipb/project/git/git-doc/git-reset.html 一

git reset 之后切换到原来的commit

git reset的语法: git reset [--hard|soft|mixed|merge|keep] [<commit>或HEAD] 作用:将当前分支reset到指定的commit或者HEAD(默认为最新的一次提交,即重设到最新一次提交之前的版本) 那使用git reset命令之后,想回到以前怎么处理呢? 第一种方法: git reflog git reset --hard commitid 第二种方法: git reflog git checkout commitid git reb

2. git reset 命令

1.命令: git reset --soft 提交id案例: git reset --soft 1c27eac023b6a66a9d40b460cd8bbc6e564be9e9结果: 会将版本库中的文件内容还原到该提交id那刻时的内容. 2.命令: git reset 提交id案例: git reset 1c27eac023b6a66a9d40b460cd8bbc6e564be9e9结果: 会将版本库和暂存区中的文件内容还原到该提交id那刻时的内容. 3.命令: git reset --hard

Git学习总结_05_搭建Git简易高效服务器

1. mysysgit+gitblit安装流程 1.1资源 需先下载好的资源(公司用的1.6,1.7+请自行匹配对应的mysysgit+gitblit): jdk1.6 Git-1.8.4-preview20130916.exe gitblit-1.2.1.rar 1.2安装 1.2.1 Git Bash安装 1)双击弹出安装页面  2)点击2次next,进入路径选择,添加自定义的路径即可:  3)点击next,进入 选择组件,  4)点击2次next 进,选择运行环境,选择 “run Git

什么是git?window下安装git

一:Git是什么? Git是目前世界上最先进的分布式版本控制系统. 二:SVN与Git的最主要的区别? SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以首先要从中央服务器哪里得到最新的版本,然后干活, 干完后,需要把自己做完的活推送到中央服务器.集中式版本控制系统是必须联网才能工作,如果在局域网还可以,带宽够大,速度够快,如果在互联网下,如果网 速慢的话,就纳闷了. Git是分布式版本控制系统,那么它就没有中央服务器的,每个人的电脑就是一个完整的版