checkout
切换分支或恢复工作中的树状文件
实例
新建一个分支,并切换到该分支
- git checkout -b [branch]
切换到指定分支,并更新工作区
- git checkout [branch-name]
新建一个分支,指向某个tag
- git checkout -b [branch] [tag]
恢复暂存区的指定文件到工作区
- git checkout [file]
恢复某个commit的指定文件到暂存区和工作区
- git checkout [commit] [file]
切换到上一个分支
- git checkout -
恢复暂存区的所有文件到工作区
- git checkout .
选项
- git checkout [<分支>]
-
要准备在
<branch>
上工作,请通过更新工作树中的索引和文件,并将 HEAD 指向分支来切换到该分支。保留对工作树中文件的本地修改,以便可以将其提交给<branch>
。 -
如果未找到
<branch>
,但确实在一个具有匹配名称的远程(称为<remote>
)中存在一个跟踪分支,并且未指定--no-guess
,则将其等同于git checkout -b <branch> --track <remote>/<branch>
- git checkout -b <branch> --track <remote>/<branch>
-
您可以省略 <branch> ,在这种情况下,该命令将退化为“检出当前分支”,这是一个光荣的no-op,具有相当昂贵的副作用,仅显示当前分支的跟踪信息(如果存在)。
- git checkout -b|-B <新分支> [<起点>]
-
指定
-b
将导致创建新分支,就像调用git branch
然后将其检出一样。在这种情况下,您可以使用--track
或--no-track
选项,这些选项将传递给 git branch 。为方便起见,不带-b
的--track
表示创建分支;请参阅下面的 --track 说明。 -
如果给定
-B
,如果<new-branch>
不存在则创建它;否则,它被重置。这是交易等价物 - git branch -f <branch> [<start-point>],git checkout <branch>
-
也就是说,除非 "git checkout "成功,否则该分支不会被重置/创建。
- git checkout --detach [<分支>],git checkout [--detach] <commit>
-
准备在
<commit>
上工作,方法是分离HEAD
,并更新工作树中的索引和文件。保留了对工作树中文件的本地修改,因此生成的工作树将是提交中记录的状态加上本地修改。 -
当
<commit>
参数是一个分支名,--detach
选项可用于分离 HEAD 在分支的前端部(git checkout <branch>
将检查出不拆卸该分支 HEAD )。 -
省略
<branch>
会在当前分支分离 HEAD 。 - git checkout [-f|–ours|–theirs|-m|–conflict=<style>] [<tree-ish>] [–] <pathspec>…,
git checkout [-f|–ours|–theirs|-m|–conflict=<style>] [<tree-ish>] --pathspec-from-file=<file> [–pathspec-file-nul] -
覆盖与pathspec匹配的文件的内容。如果未给出
<tree-ish>
(通常是一次提交),请使用索引中的内容覆盖工作树。当<tree-ish>
给出,覆盖这两个索引和与内容在工作树<tree-ish>
。 -
由于先前合并失败,索引可能包含未合并的条目。默认情况下,如果您尝试从索引中检出此类条目,则检出操作将失败并且将不检出任何内容。使用
-f
将忽略这些未合并的条目。可以使用--ours
或--theirs
从合并的特定方面将内容从索引中检出。使用-m
,可以放弃对工作树文件的更改以重新创建原始的冲突合并结果。 - git checkout (-p|–patch) [<tree-ish>] [–] [<pathspec>…]
-
这与以前的模式相似,但是允许您使用交互式界面显示"diff"输出并选择要在结果中使用的块
- -b <new-branch>
-
创建一个名为
<new-branch>
的新分支并在<start-point>
处启动它 - -B <new-branch>
-
创建分支
<new-branch>
并在<start-point>
处启动它;如果它已经存在,则将其重置为<start-point>
- -t,--track[=(direct|inherit)]
-
创建新分支时,请设置“上游”配置
-
如果未提供 -b 选项,则通过查看为相应远程配置的refspec的本地部分,然后将初始部分剥离为“ *”,将从远程跟踪分支派生新分支的名称。 ”。这将告诉我们在分支
origin/hack
(或remotes/origin/hack
,甚至refs/remotes/origin/hack
)时,将 hack 用作本地分支。如果给定名称没有斜杠,或者上述猜测结果为空名称,则猜测被中止。在这种情况下,可以使用-b
显式命名。 - -l
-
创建新分支的reflog
- -d,--detach
-
与其签出分支来进行工作,不如签出检查和可丢弃实验的提交。当
<commit>
不是分支名称时,这是git checkout <commit>
的默认行为 - -m,--merge
-
当切换分支时,如果您对一个或多个文件进行了本地修改,而这些修改在当前分支和您要切换的分支之间是不同的,那么为了在上下文中保留您的修改,命令将拒绝切换分支。但是,如果使用这个选项,当前分支、工作树内容和新分支之间会进行三方合并,您将在新分支上。
-
发生合并冲突时,冲突路径的索引条目将保持未合并状态,您需要解决冲突并使用
git add
(或git rm
标记已解决的路径,如果合并会导致路径的删除)。 -
当从索引中检查出路径时,这个选项可以让你在指定的路径中重新创建冲突的合并。
-
当使用
--merge
切换分支时,分阶段的更改可能会丢失。 - -p,--patch
-
交互地选择
<tree-ish>
(或索引,如果未指定)和工作树之间的差异中的块。然后,将所选的块块反向应用于工作树(如果指定了<tree-ish>
,则为索引)。 -
这意味着您可以使用
git checkout -p
有选择地丢弃当前工作树中的编辑 - <branch>
-
如果它引用一个分支(即名称,当以
refs/heads/
开头时是有效的引用),则将该分支检出。否则,如果它引用有效的提交,则 HEAD 将变为“分离”,并且您将不再位于任何分支上 -
您可以使用
@{-N}
语法使用“ git checkout”操作来引用第N个最后一个分支/提交。您还可以指定-
与@{-1}
同义。 -
作为一种特殊情况,如果存在一个合并库,则可以使用
A...B
作为A
和B
合并库的快捷方式。您最多可以忽略A
和B
之一,在这种情况下,默认为HEAD
。 - <new-branch>
-
新分支机构的名称
- <start-point>
-
开始新分支的提交的名称