git checkout 命令详解

概览

git checkout 这条命令的常用格式如下:

用法一

git checkout [<commit>] [--] <paths>

用于拿暂存区的文件覆盖工作区的文件,或者用指定提交中的文件覆盖暂存区和工作区中对应的文件。

用法二

git checkout <branch>

用于切换分支。

用法三

git checkout -b <new_branch> [<start_point>]

用于创建并切换分支。

详细说明

1. git checkout [<commit>] [--] <paths>

第一种用法在命令中包含路径 <paths>。为了避免路径<paths>和引用(或者提交)<commit> 同名而冲突,可以在<paths>前用两个连续的短线减号作为分隔。

<commit> 是可选项,如果省略则相当于从暂存区(index)检出。这和 git reset 重置命令(例如 git reset HEAD <file>)大不相同:重置的默认值是 HEAD,而检出的默认值是暂存区。因此重置一般用于重置暂存区(除非使用--hard参数,否则不重置工作区),而检出命令主要是覆盖工作区(如果<commit>不省略,也会替换暂存区中相应的文件)。

第一种用法(包含了路径 <paths> 的用法)不会改变 HEAD 头指针,主要是用于拿指定版本的文件覆盖工作区中对应的文件。如果省略<commit>,则会拿暂存区的文件覆盖工作区的文件,否则用指定提交中的文件覆盖暂存区和工作区中对应的文件。

2. git checkout <branch>

第二种用法(不使用路径<paths>的用法)则会改变 HEAD 头指针。之所以后面的参数写作<branch>,是因为只有 HEAD 切换到一个分支才可以对提交进行跟踪,否则仍然会进入“分离头指针”(Detached HEAD)的状态。在“分离头指针”状态下的提交不能被引用关联到而可能会丢失。所以用法二最主要的作用就是切换分支。

3. git checkout -b <new_branch> [<start_point>]

-b 选项表示创建新分支。如果指定了 <start_point> ,那么新的分支将指向<start_point> ,否则新的分支指向当前的 HEAD. 新分支和我们熟悉的 master 分支并没有什么实质的不同,都是在refs/heads命名空间下的引用。第三种用法用于分支的创建并切换。


参考资料

《Git 权威指南》

git checkout 命令详解—— Git 学习笔记 16相关推荐

  1. git reset 命令详解 git revert命令详解。

    git reset 命令详解 reset命令 介绍 参数 补救 git revert命令 revert说明 举例: 命令 reset命令 介绍 git reset 命令格式为: git reset [ ...

  2. git checkout 命令详解

    转自:http://www.cnblogs.com/hutaoer/archive/2013/05/07/git_checkout.html?utm_source=tuicool&utm_me ...

  3. Git(8)-- 撤消操作(git commit --amend、git reset 和 git checkout 命令详解)

    文章目录 1.撤消操作:`git commit --amend` 实例详解: 2.取消暂存的文件:`git reset` 3.撤消对文件的修改:`git checkout` 超详细 Git 图文版小白 ...

  4. git log 命令详解

    git log 命令详解 git log 命令用于查看提交历史: git log [options] [<file> <commit> <tag>...] 如果不加 ...

  5. 运维之道 | Git log 命令详解

    Git log 命令详解 Git log 可以让我们查看提交commit history [root@localhost villian]# git log commit 7a690b414f87fb ...

  6. git reset 命令详解(一)—— Git 学习笔记 07

    git reset 命令详解(一) 简而言之,git reset 命令是用来将当前 branch 重置到另外一个 commit 的,这个动作可能同时影响到 index 以及 work director ...

  7. git reset 命令详解(二)—— Git 学习笔记 08

    git reset 命令详解(二) 上一篇博文git reset 命令详解(一)讲了 git reset 命令的基本原理和用法,这篇博文谈一谈 git reset 的另一种用法--后面跟一个路径(或文 ...

  8. Git 常用命令详解

    Git 常用命令详解 1. Git 常用命令 1.1 常用git 命令图表汇总 1.2 配置个人信息 1.3 创建版本库 1.4 常用Git命令汇总 2. Git 解决代码冲突 3. Git 分支管理 ...

  9. git diff命令详解

    git diff命令详解 diff里面a表示前面那个变量,b表示第二个变量 HEAD     commit版本 Index     staged版本 a.查看尚未暂存的文件更新了哪些部分,不加参数直接 ...

最新文章

  1. 基于Python进行相机校准
  2. dataGridView右键菜单并选中该行 http://blog.csdn.net/lanmao100/archive/2009/06/25/4298529.aspx...
  3. Tensorflow一些常用基本概念与函数
  4. LeetCode 672. 灯泡开关 Ⅱ(枚举)
  5. 【前端自动化构建】之 自动化部署
  6. 【cf585-div2: B】 The Number of Products(dp/推导)
  7. 统计php 代码行数,PHP实现统计代码行数小工具
  8. 蛋白质降解技术中常用的蛋白酶(一)
  9. 让POW的共识机制不再成为公链系统吞吐率的瓶颈 | Conflux CTO伍鸣
  10. Filter过滤器的简单介绍与使用
  11. 【MySQL】数据库中的三大范式
  12. 萌新python爬虫初学
  13. sql 语句in 使用占位符
  14. 随机生成10个0-100的正整数
  15. C语言实现linux环境UDP协议接收发送数据
  16. 【微信小程序】云函数/云数据库 errMsg: parameter should be object instead of undefined
  17. Linux 挂载外加磁盘
  18. U盘装win7系统nbsp;NTLDRnbsp;is…
  19. 《期货及衍生品基础》第2章 期货市场组织结构与投资者
  20. VB Adodc1控件添加数据

热门文章

  1. 《Python 网络数据采集》正则表达式
  2. NYOJ 158 省赛来了
  3. hdu 2112 HDU Today 最短路(Dijkstra算法)
  4. mybatis的bean注入出现警告
  5. 前端页面布局常见问题/已踩过的坑大杂烩
  6. Selenium 自动化测试之道--Maven-TestNG
  7. (转)Docker volume plugin - enabled create local volume on docker host
  8. JDK的动态代理深入解析(Proxy,InvocationHandler)(转)
  9. 如何利用ESP8266模块实现远程控制
  10. vue3-network 无效