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
git reset、git checkout和git revert的区别的更多相关文章
- Git - reset和checkout的区别
参考 https://segmentfault.com/a/1190000006185954 1. Git的所有操作实际上是在操作这三个区域的状态(或内容) 2. 区别 checkout是会修改HEA ...
- Git reset与checkout的区别
reset: 将暂存区的文件回撤到工作区,文件内容不会有任何变化 checkout: 将工作区文件恢复到上一次commit时的内容,将会丢失修改了但未加入暂存区的内容
- git分布式版本控制系统权威指南学习笔记(六):git reset、get stash、git checkout总结
文章目录 1. 概述 2. 如何把修改暂存起来,留着以后使用? 2.1 使用场景 2.2 git stash 暂存进度 2.3 查看进度 2.4 恢复进度 3. 如何撤销工作区的修改? 4. 如何把暂 ...
- git reset and git checkout
git reset --hard <commit>: 1.替换引用的指向.引用指向新的提交ID; 2.替换暂存区.替换后,暂存区的内容和引用指向的文件夹树一致; 3.替换工作区.替换后,工 ...
- git reset与git revert的区别
http://alpha-blog.wanglianghome.org/2010/07/30/git-partial-rollback/ reset(版本撤回) 格式 git reset [-q] [ ...
- git reset 与 git revert的区别?
一,git reset的功能: 该命令修改HEAD的位置,即将HEAD指向的位置改变为之前存在的某个版本, 说明: 修改后,push到远程仓库时需要使用"git push -f"提 ...
- [转] git reset简介
http://blog.csdn.net/hudashi/article/details/7664464 http://guibin.iteye.com/blog/1014369 http://hi. ...
- [译]git reset
git reset 如果说git revert是一个安全的撤销方式, 那么git reset就是一个非常危险的方法了. 当你使用git reset撤销的时候, 你没有可能在回到最初了-他是一个永久的不 ...
- git reset soft,hard,mixed之区别深解
GIT reset命令,似乎让人很迷惑,以至于误解,误用.但是事实上不应该如此难以理解,只要你理解到这个命令究竟在干什么. 首先我们来看几个术语 HEAD 这是当前分支版本顶端的别名,也就是在当前分支 ...
- git reset揭秘
一.命令 首先,让我们来解释几个定义. HEAD(头) 指向当前branch最顶端的一个commit,该分支上一次commit后的节点 Index(索引) The index, ...
随机推荐
- 迭代的是人,递归的是神。——L. Peter Deutsch
递归,数学里面叫recursion,其实就是递推关系. 中学数学有一部分其实就是递归的非常典型的做法,不过老师们都没怎么扩展,新课标必修五第二章数列应该算是我们第一次接触递推的概念了. 其实说到递归 ...
- php 启动过程 - sapi MSHUTDOWN 过程
php 启动过程 - sapi MSHUTDOWN 过程 概述 当服务器关闭时, 会走到 sapi MSHUTDOWN 过程 注册过程 本次内容是在 php 启动过程 - sapi MINIT 过程 ...
- three.js提供的几何体
1.简单几何体 three.js提供的稍微简单点的几何体包括有:PlaneGeometry(平面).CircleGeometry(圆形).ShapeGeometry(塑性).CubeGeometry( ...
- CF #312 E. A Simple Task 线段树
题目链接:http://codeforces.com/problemset/problem/558/E 给一个字符串,每次对一个区间内的子串进行升序或者降序的排列,问最后字符串什么样子. 对于字符串排 ...
- 《HelloGitHub》第 13 期
公告 本期推荐的项目到达了 30 个,里面少不了对本项目支持的小伙伴们,再次感谢大家. 本次排版尝试:根据分类项目名排序,为了让大家方便查阅.如果有任何建议和意见欢迎留言讨论 临近 5.1 假期,所以 ...
- 随机抽样一致算法(Random sample consensus,RANSAC)
作者:桂. 时间:2017-04-25 21:05:07 链接:http://www.cnblogs.com/xingshansi/p/6763668.html 前言 仍然是昨天的问题,别人问到最小 ...
- HttpClient研究学习总结
Http协议非常的重要,HttpClient相比传统JDK自带的URLConnection,增加了易用性和灵活性(具体区别,日后我们再讨论),它不仅是客户端发送Http请求变得容易,而且也方便了开发人 ...
- bzoj4818 [Sdoi2017]序列计数
Description Alice想要得到一个长度为n的序列,序列中的数都是不超过m的正整数,而且这n个数的和是p的倍数.Alice还希望,这n个数中,至少有一个数是质数.Alice想知道,有多少个序 ...
- Play学习 - 体验网页模板
在经过无数个尝试后,最终用sbt把play所依赖的所有包都下载下来了,现在可以非常快速编译运行了.今天体验了下网页模板,觉得非常不错,在这里做个简单的介绍. 原文说明: A Play Scala te ...
- Elasticsearch5中安装Elasticsearch-head插件
介绍 elasticsearch-head是一个用于管理Elasticsearch的web前端插件,搞过ES的同学应该都了解.该插件在es5中可以以独立服务的形式进行安装使用.本文将介绍如何操作. 相 ...