设为首页 收藏本站
查看: 957|回复: 0

[经验分享] Git学习笔记03--git reset

[复制链接]

尚未签到

发表于 2018-9-18 11:11:13 | 显示全部楼层 |阅读模式
  转载自:http://www.cnblogs.com/craftor/archive/2012/11/04/2754140.html
  Git学习笔记03--git reset
  摘自《Git权威指南》
  Git reset 是Git最常用的命令之一,也是最危险最容易误用的命令。
  用法一:git reset [-q] [] [--] ...
  用法二:git reset [--soft --mixed | --hard | --merge | --keep] [-q] []
  以上两种用法,都是可选项,可以使用下引用或提交ID,如果省略则相当于使用了HEAD的指向作为提交ID。
  上面的两种用法的区别在于,第一种在命令中包含路径。为了避免路径和引用(或者提交ID)同名而发生冲突,可以在前用两个连续的短线(减号)作为做分隔。
  第一种用法(包含了路径的用法)不会重置引用,更不会改变工作区,而是用指定提交状态()下的文件()替换掉暂存区中的文件。例如命令git reset HEAD 相当于取消之前执行的git add 命令时改变的暂存区。
  第二种用法(不使用路径的用法)则会重置引用。根据不同的选项,可以对暂存区或工作区进行重置。参照下面的版本库模型图,来看一看不同的参数对第二种重置语法的影响。
  clip_image002
  命令格式:git reset [--soft | --mixed | --hard] []
  1)使用参数--hard,如git reset --hard
  会执行上图中的全部动作①、②、③,即:
  ①替换引用的指向。引用指向新的提交ID。
  ②替换暂存区。替换后,暂存区的内容和引用指向的目录树一致。
  ③替换工作区。替换后,工作区的内容变得和暂存区一致,也和HEAD所指向的目录树内容相同。
  2)使用参数--soft,如 git reset --soft
  会执行上图中的操作①。即只更改引用的指向,不改变暂存区和工作区。
  3)使用参数--mixed或者不使用参数(默认为--mixed),如 git reset
  会执行上图中的操作①和②。即更改引用的指向及重置暂存区,但是不改变工作区。
  下面通过一些示例,看一下重置命令的不同用法。
  $ git reset
  仅用HEAD指向的目录树重置暂存区,工作区不会受到影响,相当于将之前用git add 命     令更新到暂存区的内容撤出暂存区。引用也未改变,因为引用重置到HEAD相当于没      有重置。
  $ git reset HEAD
  同上
  $ git reset -- filename
  仅将文件filename 的改动撤出暂存区,暂存区中其他文件不改变。相当于命令git add filename 的反射操作。
  $ git reset HEAD filename
  同上。
  $ git reset --soft HEAD^
  工作区和暂存区不改变,但是引用向前回退一次。当对最新的提交说明或者提交的更改不满意时,撤销最新的提交以便重新提交。
  之前提到过修补提交命令git commit --amend,用于对最新的提交进行重新提交以修补错误的提交说明或者错误的提交文件。修补提交命令实际上相当于执行了下面两条命令。(注:文件.git/COMMIT_EDITMSG保存了上次的提交日志)
  $ git reset --soft HEAD^
  $ git commit -e -F .git/COMMIT_EDITMSG
  $ git reset HEAD^
  工作不改变,但是暂存区会回退到上一次提交之前,引用也会回退一次。
  $ git reset --mixed HEAD^
  同上
  $ git reset --hard HEAD^
  彻底撤销最近的提交。引用回退到前一次,而且工作区和暂存区都会回退到上一次提交的状态。自上一次以来的提交全部丢失。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-589767-1-1.html 上篇帖子: git如何恢复旧版本 下篇帖子: Git学习笔记04--git checkout
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表