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 将删除的路径标记为稍后添加
git reset 与 git revert的区别?的更多相关文章
- git reset、git checkout和git revert的区别
这三个git命令都是用来撤销代码仓库中的某些更改,而前两个命令不仅可以作用于commit层面,还可以作用于file层面Reset在commit层面,reset通过移除当前分支的一些节点来实现版本回滚; ...
- 代码回滚:git reset、git checkout和git revert区别和联系
git reset.git checkout和git revert是你的Git工具箱中最有用的一些命令.它们都用来撤销代码仓库中的某些更改,而前两个命令不仅可以作用于提交,还可以作用于特定文件. 因为 ...
- Git 相关问题分享,git reset与git revert的区别?
1.如果我在git add 后想要撤销操作,该怎么做? 使用 git rm --cache [文件名/ *] 或者 git reset HEAD, 为什么这个命令也会有效果呢,实际上reset将 HE ...
- git reset soft,hard,mixed之区别深解
GIT reset命令,似乎让人很迷惑,以至于误解,误用.但是事实上不应该如此难以理解,只要你理解到这个命令究竟在干什么. 首先我们来看几个术语 HEAD 这是当前分支版本顶端的别名,也就是在当前分支 ...
- git reset与git revert的区别
http://alpha-blog.wanglianghome.org/2010/07/30/git-partial-rollback/ reset(版本撤回) 格式 git reset [-q] [ ...
- 关于git reset和git revert之前的区别
很多时候,git新手容易误操作,比如,在levelIISZ-1.4.dev分支下,运行了git pull idc cpp-1.0的结果,这样做麻烦很大,经常导致maven项目格式不正确,这个时候,可以 ...
- git reset 和 git revert 使用区别
git reset 用于回退代码,但是git pull后会和远程分支保持一致,所以无法修改远程代码 git revert可以撤销代码,撤销后直接git push ,可以修改远程分支的代码
- Git撤销&回滚操作(git reset 和 get revert)
转自:https://blog.csdn.net/asoar/article/details/84111841 git的工作流 工作区:即自己当前分支所修改的代码,git add xx 之前的!不包括 ...
- git reset与git revert比較
git reset git reset的作用是还原Index的状态或改动本地分支HEAD的位置. 这个命令适合用于从某个提交点又一次开新的分支.比方,假设某个提交之后的代码我们都不要了,就能够在本地r ...
随机推荐
- Idea没安装几款好用的插件,怎么风骚的写代码???
工欲善其事,必先利其器,好的工具可以提升我们的开发效率,越来越多的Java程序员从Eclipse转到了Jetbrains家的Idea.今天给大家介绍的是我常用的十几款Idea必装的插件. Ti ...
- oracle之二表和表空间的关系
表和表空间的关系 建一个使用缺省值的表空间SQL> create tablespace a datafile '/u01/data/urpdb/a01.dbf' size 10m; 利用orac ...
- python:一切皆对象
学过java语言的童鞋都知道,java是一门面向对象语言,其基本思想就是一切皆对象.Python也是一样的,甚至Python将面向对象思想贯彻地更加彻底,因为在Python中,class本身是一个 ...
- 微服务实战系列(八)-网关springcloud gateway自定义规则
1. 场景描述 先说明下项目中使用的网关是:springcloud gateway, 因需要给各个网关服务系统提供自定义配置路由规则,实时生效,不用重启网关(重启风险大),目前已实现:动态加载自定义路 ...
- 深入了解Redis(6)-持久化原理
Redis是一个内存数据库,数据保存在内存中.但我们都知道存储在内存中的数据会因为外部因素而丢失,所以Redis会把数据持久化到磁盘中,至于是如何持久化呢? 一.RDB 1.手动触发 save:该命令 ...
- Tomcat 8.5集群配置
示例 <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions= ...
- Centos-显示开机信息-dmesg
dmesg 显示开机信息,开机时内核将开机信息存储在系统缓冲区(ring buffer)中,存储在 /var/log/dmesg文件中
- 《Java从入门到失业》第五章:继承与多态(5.1-5.7):继承
5.继承与多态 5.1为什么要继承 最近我儿子迷上了一款吃鸡游戏<香肠派对>,无奈给他买了许多玩具枪,我数了下,有一把狙击枪AWM,一把步枪AK47,一把重机枪加特林(Gatling).假 ...
- java转python代码
今天发现一个好玩的工具:可以直接将java转成python 1. 安装工具(windows 环境下面) 先下载antlr: http://www.antlr3.org/download/antlr-3 ...
- MFC 简介
参考:https://baike.baidu.com/item/MFC/2236974 MFC (微软基础类库) 编辑 锁定 讨论999 MFC(Microsoft Foundation Clas ...