原文: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