原文:Git Checkout Explained: How to Checkout, Change, or Switch a Branch in Git

git checkout 命令在不同的分支之间切换,或者恢复工作树文件。这个命令有很多不同的选项,这里就不一一介绍了,但你可以在 Git 文档中看一看所有的选项。

切出一个特定的提交

要切出一个特定的提交,运行命令:

git checkout specific-commit-id

我们可以通过运行以下命令来获取特定的提交 ID:

git log

切出一个现有的分支

要切出一个现有的分支,请运行以下命令:

git checkout BRANCH-NAME

一般来说,除非你的工作目录是干净的,否则 Git 不会让你切出另一个分支,因为你会失去任何没有提交的工作目录变化。你有三个选择来处理你的修改:1)作废它们,2)提交它们,或者 3)暂存它们。

切出一个新的分支

要用一条命令创建并切出一个新的分支,你可以使用:

git checkout -b NEW-BRANCH-NAME

这将自动将你切换到新的分支。

切出一个新的分支或将一个分支重置为一个起点

下面的命令类似于切出一个新的分支,但使用了 -B(注意是大写的 B)标志和一个可选的 START-POINT 参数:

git checkout -B BRANCH-NAME START-POINT

如果 BRANCH-NAME 分支不存在,Git 将创建它并在 START-POINT 处启动它。如果 BRANCH-NAME 分支已经存在,那么 Git 会将该分支重置为 START-POINT。这相当于用 -f 运行 git branch

强制切出

你可以在 git checkout 命令中使用 -f--force 选项来强制 Git 切换分支,即使你有未缓存的修改(换言之,工作树的索引与 HEAD 不同)。基本上,它可以用来丢弃本地修改。

当你运行下面的命令时,Git 将会忽略未合并的条目:

git checkout -f BRANCH-NAME

# Alternative
git checkout --force BRANCH-NAME

撤销工作目录中的修改

你可以使用 git checkout 命令来撤销你对工作目录中的文件所做的更改。这将使该文件恢复到 HEAD 中的版本:

git checkout -- FILE-NAME