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

[经验分享] Git学习笔记04--git checkout

[复制链接]

尚未签到

发表于 2018-9-18 11:12:02 | 显示全部楼层 |阅读模式
  转载自:http://www.cnblogs.com/craftor/archive/2012/11/04/2754147.html
  Git学习笔记04--git checkout
  摘自《Git权威指南》
  检出命令git checkout是git最常用的命令之一,同时也是一个很危险的命令,因为这条命令会重写工作区。检出命令的用法如下:
  用法一:git checkout [-q] [] [--] ...
  用法二:git checkout []
  用法三:git checkout [-m] [[-b]--orphan] ] []
  上面列出的第一种用法和第二种用法的区别在于,第一种用法在命令中包含路径。为了避免路径和引用(或者提交ID)同名而发生冲突,可以在前用两个连续的短线(短号)作为分隔。
  第一种用法的是可选项,如果省略则相当于从暂存区(index)进行检出。这和上一章的重置命令大不相同:重置的默认值是HEAD,而检出的默认值是暂存区。因此重置一般用于重置暂存区(除非使用--hard参数,否则不会重置工作区),而检出命令主要是覆盖工作区(如果不省略,也会替换暂存区中相应的文件)。
  第一种用法(包含了路径的用法)不会改变HEAD头指针,主要是用于指定版本的文件覆盖工作区中对应的文件。如果省略,则会用暂存区的文件覆盖工作区的文件,否则用指定提交中的文件覆盖暂存区中和工作区中对应的文件。
  第二种用法(不使用路径的用法)则会改变HEAD头指针。之所以后面的参数会写作,是因为只有HEAD切换到一个分支才可以对提交进行跟踪,否则仍然会进入“分离头指针”的状态。在“分离头指针”状态下的提交不能被引用关联到,从而可能丢失。所以用法二最主要的作用就是切换到分支。如果省略则相当于对工作区进行状态检查。
  第三种用法主要是创建和切换到新的分支(),新的分支从指定的提交开始创建。新分支和我们熟悉的master分支没有什么实质的不同,都是在refs/heads命名空间下的引用。
  下图所示的版本库模型图描述了git checkout实际完成的操作。
  clip_image002
  下面通过一些示例具体看一下检出命令的不同用法。
  $ git checkout branch
  检出branch分支。要完成图中的三个步骤,更新HEAD以指向branch分支,以及用branch  指向的树更新暂存区和工作区。
  $ git checkout
  汇总显示工作区、暂存区与HEAD的差异。
  $ git checkout HEAD
  同上
  $ git checkout -- filename
  用暂存区中filename文件来覆盖工作区中的filename文件。相当于取消自上次执行git add filename以来(如果执行过)的本地修改。
  $ git checkout branch -- filename
  维持HEAD的指向不变。用branch所指向的提交中filename替换暂存区和工作区中相   应的文件。注意会将暂存区和工作区中的filename文件直接覆盖。
  $ git checkout -- . 或写作 git checkout .
  注意git checkout 命令后的参数为一个点(“.”)。这条命令最危险!会取消所有本地的  修改(相对于暂存区)。相当于用暂存区的所有文件直接覆盖本地文件,不给用户任何       确认的机会!


运维网声明 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-589768-1-1.html 上篇帖子: Git学习笔记03--git reset 下篇帖子: Git学习笔记05--git stash
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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