3

checkout 命令的 git 文档中,可以找到以下文本:

...如果没有给出路径, git checkout 也会更新 HEAD 将指定的分支设置为当前分支...。

谁能更简单地解释一下这意味着什么?对不起,如果它看起来很简单,并且通过该页面阅读,我似乎无法想出它的确切含义。对不起,如果这看起来很基本..

特别是我对结帐如何更新 HEAD 感到困惑。我通常设想 checkout 会影响工作目录——这是 git 独有的功能,因为您正在更新存储库的本地副本以便以后使用它?

4

5 回答 5

3

HEAD是指向您的工作副本从中签出的提交的指针。因此,如果您签出一个分支(或提交或标签),则HEAD设置为该提交。

此信息存储在 textfile.git/HEAD中,您可以简单地查看其内容:

$ cat .git/HEAD
# refs: refs/heads/master
于 2010-09-20T19:19:02.660 回答
3

这意味着git checkout branchname

  1. 将该分支顶端的文件签出到您的工作目录中,然后
  2. 将您设置HEAD到该分支的尖端,以便您现在“在”它。

例子:

 jb@apto % git branch         
 * develop
   master
   next
 jb@apto % git checkout master
 Switched to branch 'master'
 jb@apto % git branch
   develop
 * master
   next
于 2010-09-20T19:29:54.990 回答
3

版本 A:(指定分支)

git checkout <branch>

获取该 <branch> 的所有文件并将 HEAD(指向“我现在在哪里”的指针)放在指定的分支中。

版本 B:(指定路径)

git checkout <file>

获取最新版本的 <file> 并保留 HEAD。

于 2013-01-15T20:10:16.240 回答
1

如果您处于DETACHED HEAD模式(请参阅此问题),您可以轻松地将 HEAD 重置为 master 分支:

结帐分离

这里一个 ' git checkout' 会将 HEAD 重置为master分支的尖端。
(更多内容参见“ A Visual Git Reference ”)
它还将更新索引和工作目录。
所以它不仅仅是重置指针' HEAD'。

于 2010-09-20T19:18:12.000 回答
0

使用 Git 2.23+(2019 年 8 月),使用git switch而不是混淆git checkout,加上git restore(仅用于文件)

git switch master

这会将 HEAD 切换回master.

您仍然可以使用git switch --detach <acommit>.
不再结帐(处理分支和文件)。

于 2020-01-11T22:40:34.420 回答