git head pointer - 特定文件与整个repo

时间:2017-11-24 16:43:17

标签: git

我有一个repo,其中提交了许多文件。

我检查了特定文件的旧版本(没有创建分支)。

在所有git教程中都有图片的视觉解释,例如

A  B  C  D
*--*--*--* <-- master <-- HEAD

描述特定文件的更改方式。

现在查看B,给出Detached Head

A  B  C  D
*--*--*--* <-- master
   ^
    \-- HEAD

(致谢,ascii艺术取自Brian Campbell的帖子Checking out an old commit and maintaining the head on the master branch?

我看到这是特定文件的准确情况。但是,我相信repo中的其他文件仍然是最新版本,因为只检出了一个文件的旧版本。

问题:单个HEAD如何对文件夹中的所有文件有效,包括一些比HEAD引用的提交更新的文件。每个文件应该有一个HEAD指针吗?

在输入这个问题时,我现在猜测HEAD概念可能适用于本地(或远程)仓库,与工作目录无关。因此,工作目录中的大多数文件比HEAD更新的事实是&#34;只是它的工作方式&#34;。

1 个答案:

答案 0 :(得分:1)

执行git checkout B -- path时, 你没有进入一个独立的头状态, 并且您的工作树未更改为B状态。 只有工作树中指定的path设置为B的状态。

如果另一方面你做git checkout B, 你进入了独立的头状态, 并且整个工作树的内容设置为B的状态。