返回顶部
本页目录

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 作为 AB 合并库的快捷方式。您最多可以忽略 AB 之一,在这种情况下,默认为 HEAD

<new-branch>

新分支机构的名称

<start-point>

开始新分支的提交的名称