git checkout 命令
git checkout
git checkout
命令用于更新工作区的文件使它们和指定提交或暂存区保持一致,也就是会从指定提交(或者暂存区)中拷贝文件到工作区替换掉原有的文件,也可用于切换分支(切换分支的同时也会更新工作区和暂存区的文件)。
更新文件
更新工作区的指定文件,使它和暂存区保持一致:
git checkout -- <file>
这个命令也就是撤销工作区对文件的修改。
--
选项的作用是表明其后的内容是目录或文件,而不是分支名,避免有文件名和分支名一样而出错的情况,因为 git checkout
后面直接加分支名就成了切换分支了,在保证不会混淆的情况下,可以直接使用以下命令:
git checkout <file>
同时更新工作区和暂存区的指定文件,使它和指定提交保持一致:
git checkout <commit> <file>
比如将提交设为 HEAD
:
git checkout HEAD <file>
这个命令更新工作区和暂存区的指定文件,使它和当前提交保持一致,也就是会把工作区和暂存区中对该文件的修改全部撤销,恢复到上一次 git commit
后的状态。
- 上面命令中的
file
不一定只是一个确定的文件名,也可以是目录,还可以是匹配多个文件名的模式,比如*.py
匹配所有以.py
结尾的文件。
进一步,有以下两种用法:
(1)更新当前目录(和子目录)的所有文件,使它们和暂存区保持一致:
git checkout .
也就是撤销当前目录中的所有修改,包括删除的文件,但是未跟踪的文件不受影响。
(2)更新当前目录(和子目录)和对应的暂存区的所有文件,使它们和当前提交保持一致:
git checkout HEAD .
也就是撤销当前目录和对应暂存区中的所有修改,同样未跟踪文件不受影响。
- 上面这两个命令只是针对执行命令时所处的目录起作用,因为
.
(句点)在shell
中代表当前目录,比如在工作区子目录下执行这两个命令,就只会对这个子目录(和子目录的子目录)起作用,并不会影响到工作区的其它文件。 - 注意以上更新文件的命令都不会切换分支。
切换分支
如果给 git checkout
命令指定分支名作为参数,那么就可以用来切换分支:
git checkout <branch>
这个命令切换到指定分支,并将暂存区和工作区的文件更新到和该分支的最新提交一致,但是如果当前工作区或暂存区还有修改没有提交,那么这个命令会失败。
- 切换分支后
HEAD
将指向对应的分支名,而该分支名指向它的最新提交(分支名实际上是一个指向它的最新提交的指针)
使用以下命令创建分支的同时切换到该分支:
git checkout -b <branch> [<start-point>]
或:
git checkout -B <branch> [<start-point>]
可以指定新分支基于哪一个提交 start-point
建立。
-B
选项的特殊之处在于如果要创建的分支已经存在,那么会把该分支重置到指定的 start-point
上,而 -b
选项则无法创建,会提示分支已经存在。
使用以下命令在当前提交新建分支,并设置跟踪指定的远程分支。
git checkout -b <branch> --track <remote>/<branch>
分离头模式
如果不给 git checkout
命令指定分支名,而是指定提交的校验和、标签名或者 master^
形式的提交历史作为参数,那么就会进入分离头模式,此时 HEAD
与分支分离了(日常工作中 HEAD
总是指向某个分支),直接指向了提交,在这种情况下,提交新内容会产生问题,因为新提交不会更新分支,这个新提交就只能通过校验和来访问,一旦切换到其它分支,基本就找不到这个新提交了。为避免产生这样的问题,可以基于某个提交创建新分支然后切换过去进行工作:
git checkout -b <branch> [<start-point>]
不过,这种模式可以快速的切换到历史版本,可以方便的基于历史版本进行编译、安装软件,如果不需要进行提交,那么这是一种方便的工作方式。
git checkout 命令相关推荐
- git checkout 命令详解—— Git 学习笔记 16
git checkout 命令详解 概览 git checkout 这条命令的常用格式如下: 用法一 git checkout [<commit>] [--] <paths> ...
- git checkout 命令详解
转自:http://www.cnblogs.com/hutaoer/archive/2013/05/07/git_checkout.html?utm_source=tuicool&utm_me ...
- 使用git checkout命令切换到指定的commit
git checkout命令有很多种用法. git checkout + 分支名,切换到指定的分支. 比如git checkout develop: 切换之后,HEAD文件的内容: ref: refs ...
- git checkout 命令图文详解
git checkout 命令图文详解 git checkout branchname (切换本地分支) 切换远程分支 放弃修改 git checkout . git checkout -- file ...
- Git(8)-- 撤消操作(git commit --amend、git reset 和 git checkout 命令详解)
文章目录 1.撤消操作:`git commit --amend` 实例详解: 2.取消暂存的文件:`git reset` 3.撤消对文件的修改:`git checkout` 超详细 Git 图文版小白 ...
- git checkout 命令所有参数用法详解
阅读这篇文章你将得到什么? git 命令的帮助文档获取 git checkout 命令系统知识详解,所有参数哟 怎么系统学习一个git 命令 根据git 的帮助一步步的撸下去,这样够全吧 获取参考手册 ...
- git基础教程(11) git checkout命令,掌握这些足以
文章目录 概览 用法一 用法二 用法三 详细说明 1. `git checkout [<commit>] [--] <paths>` 2. `git checkout < ...
- git如何查看缓存区文件内容_详解Git工作区、暂存区、历史记录区以及git reset、git revert、git checkout等撤销命令的区别...
一.可以将git简单的分为三个区域 1.工作区(working directory) 2.暂缓区(stage index) 3.历史记录区(history) 如图: 其中git ...
- git的一些简单命令(git clone,git branch,git checkout。。。)
1.git clone 命令 $ git clone <版本库的网址> 比如,克隆jQuery的版本库. $ git clone https://github.com/jquery/jqu ...
最新文章
- 十四、Canny边缘提取
- k8s dashboard_k8s集群部署Dashboard
- Android JSON数据与实体类之间的相互转化-------GSON的简单用法
- Python程序员晒追女神聊天截图,坦言第一次没经验,网友直呼凭实力单身
- Centos 编译安装mysql 5.6.21
- 在IDEA中编辑struts国际化properties文件
- 计算机拼音字体大小设置,拼音字体
- java导出mysql数据表的结构生成word文档
- 使用Pytorch识别字符验证码
- “匠心之韵,数据之美”之InfoQ专访COO叶谦:解读全域大数据战略背后的技术演进...
- Frequent Itemset Mining 频繁项集查找
- 网络隔离环境下的跨网数据传输,如何保障安全性?
- VB/VBA,请让我点名表扬你
- Cocos Creator 位图字体(艺术数字资源、BMFont、自定义位图字体、插件)
- python如何将excel非首行作为dataframe的列名
- 利用Matlab进行图像变换(傅里叶变换、余弦变换)
- HtmlAgilityPack.dll爬虫获取百度音乐批量下载地址(C#源码)
- SCAU华南农业大学-数电实验-可找零的自动售货机-实验报告
- 【Linux】静态库与共享库
- GIS之路,松柏苍青