在git中,checkout是“检出”的意思,该命令用于切换分支或者恢复工作树文件,语法为“git checkout branchName”或者“ git checkout 参数 选项 分支”。
本文操作环境:Windows10系统、Git2.30.0版、Dell G3电脑。
git中checkout的用法是什么
切克闹(checkout)作为git中最为常用的命令之一,对它使用的熟练程度直接决定了你对git理解和掌握的熟练程度,因此我们有理由为这个命令好好的做一下总结。
1. 基础
checkout最常用的用法莫过于对于工作分支的切换了:
git checkout branchName
该命令会将当前工作分支切换到branchName。另外,可以通过下面的命令在新分支创建的同时切换分支:
git checkout -b newBranch
该命令相当于下面这两条命令的执行结果:
1. git branch newBranch 2. git checkout newBranch
该命令的完全体为:
git checkout -b|-B <new_branch> [<start point>]
该命令的一个应用场景为:当我们刚从git上clone一个项目后,我们可以查看该项目的分支情况
可以看到,克隆完后,只会默认创建一个master本地分支,其他都是远程分支,此时如果我们想切换到newBranch的远程分支该怎么操作呢?方法有很多种,我们简单介绍两种:
方法一:使用git checkout -b
git checkout -b newBranch origin/newBranch
方法二:使用git branch <branchname> [<start-point>]
git branch newBranch origin/newBranch git checkout newBranch
方法一其实是方法二的简化版
2. 深入
要想更深入的了解checkout,我们需要了解checkout的作用机制。该命令的主要关联目标其实是.git 文件夹下的HEAD文件,我们可以查看工程下面的.git文件夹:
该文件夹下HEAD文件记录了当前HEAD的信息,继续查看HEAD文件:
可以看到当前HEAD文件指向了refs/heads路径下的master文件,该文件记录了master分支最近的一次commit id,说明当前HEAD指向了master分支。如果我们将当前分支切换到newBranch 分支,我们再看HEAD文件:
可以看到HEAD文件内容指向了newBranch分支
3. 扩展
用法1:
git checkout [<commit id>] [--] <paths>
该命令主要用于检出某一个指定文件。
如果不填写commit id,则默认会从暂存区检出该文件,如果暂存区为空,则该文件会回滚到最近一次的提交状态。
例如:
当暂存区为空,如果我们想要放弃对某一个文件的修改,可以用这个命令进行撤销:
git checkout [--] <paths>
如果填写commit id(既可以是commit hash也可以是分支名称还可以说tag,其本质上都是commit hash),则会从指定commit hash中检出该文件。用于恢复某一个文件到某一个提交状态。
用法2:
git checkout -b <new_branch> [<start_point>]
该命令是文章开头部分所说的checkout常见用法的扩展,我们可以指定某一个分支或者某一次提交来创建新的分支,并且切换到该分支下,该命令相当于下面两条命令的执行结果:
1. git branch <new_branch> [<start_point>] 2. git checkout <new_branch>
推荐学习:《Git教程》