Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git 到底什么是跟踪与未跟踪?_Git - Fatal编程技术网

Git 到底什么是跟踪与未跟踪?

Git 到底什么是跟踪与未跟踪?,git,Git,我正在读一本专业的Git书籍,我对跟踪和未跟踪的定义不是100%清楚 书中写道:“跟踪的文件是上一个快照中的文件;它们可以是未修改、修改或暂存的。未跟踪的文件是所有其他文件—工作目录中不在上一个快照中且不在暂存区域中的任何文件。” 如果您想了解更多内容,请点击本章的链接: 让我困惑的是短语“last snapshot”。暂存区域(或索引,如果您喜欢该术语)被视为快照,提交也是快照,对吗 我也有一些简单的场景,我想澄清一下,这将真正为我澄清这个概念: 场景1:假设我有A和B两个文件。我提交了A,然

我正在读一本专业的Git书籍,我对跟踪和未跟踪的定义不是100%清楚

书中写道:“跟踪的文件是上一个快照中的文件;它们可以是未修改、修改或暂存的。未跟踪的文件是所有其他文件—工作目录中不在上一个快照中且不在暂存区域中的任何文件。”

如果您想了解更多内容,请点击本章的链接:

让我困惑的是短语“last snapshot”。暂存区域(或索引,如果您喜欢该术语)被视为快照,提交也是快照,对吗

我也有一些简单的场景,我想澄清一下,这将真正为我澄清这个概念:

场景1:假设我有A和B两个文件。我提交了A,然后我提交了B阶段。 是否因为暂存区域是最新的快照而跟踪B而未跟踪A

场景2:假设我有文件A和B。我提交了A,然后提交了B。
被认为是未追踪的吗


场景3:我执行git克隆,将一些文件X放入本地存储库。之所以跟踪X,是因为我的本地存储库是我最近(唯一)的快照?

我承认这可能需要在书中进行澄清。我的理解(以及许多工具使用的通用术语)是,“最后一个快照”意味着头部提交;在这个术语中,“最后一个快照”从来不是指索引。因此,如果文件既不在头中,也不在索引中,则该文件具有“未跟踪的更改”

场景1:否。A和B都会被跟踪,因为A在头部,B是分段的

场景2:否。A和B都在头部

场景3:是。X在头上

如果您只创建一些文件C而不添加或提交它,那么您将拥有一个“未跟踪”的文件


进一步回想一下,提交是当时存储库的一种表示。因此,如果您添加并提交一些文件
A
B
,并进一步提交(不改变
A
B
),那么这些文件仍然存在于提交头中。因此(不管他们在存储库中呆了多长时间),在你删除他们之前,他们仍然被认为是“被跟踪的”。

我承认这可能需要在书中加以澄清。我的理解(以及许多工具使用的通用术语)是,“最后一个快照”意味着头部提交;在这个术语中,“最后一个快照”从来不是指索引。因此,如果文件既不在头中,也不在索引中,则该文件具有“未跟踪的更改”

场景1:否。A和B都会被跟踪,因为A在头部,B是分段的

场景2:否。A和B都在头部

场景3:是。X在头上

如果您只创建一些文件C而不添加或提交它,那么您将拥有一个“未跟踪”的文件


进一步回想一下,提交是当时存储库的一种表示。因此,如果您添加并提交一些文件
A
B
,并进一步提交(不改变
A
B
),那么这些文件仍然存在于提交头中。因此(无论他们在存储库中呆了多长时间),在你删除他们之前,他们仍然被认为是“被跟踪的”。

据我理解,被跟踪的文件就是你添加或提交的所有文件。git将在您的文件系统上看到的任何其他文件,但不会跟踪它们。也就是说,它没有记录对这些文件的更改。

据我所知,跟踪文件就是您添加或提交的所有内容。git将在您的文件系统上看到的任何其他文件,但不会跟踪它们。也就是说,它没有记录这些文件的更改。

这使得引号中的定义有点错误:如果“last snapshot”=“tree associated with HEAD”,并且索引中但不在该树中的路径现在被“跟踪”,那么它应该说“跟踪的文件是最后一个快照、索引或两者中的文件”。我认为这是对“跟踪文件”的准确描述。是的,我同意。我依靠的是第二句话的准确性(“未跟踪的文件就是一切——工作目录中任何不在上一个快照中且不在临时区域的文件”)。就目前情况而言,这两句话并不一致,表明存在某种类型的文件未被跟踪和未被跟踪(“暂存?”)。但我认为其目的是用这个术语“跟踪”阶段性的变化。我同意torek的观点。谢谢你的澄清,爱德华。另外,谢谢你的回答。我还有一个场景,抱歉!假设我有文件A和B,它们都在头上。在很长一段时间里,我不断修改这两个文件,但只提交了a。即使头脑中存在一个超旧版本,B仍然被认为是被跟踪的吗?@KacyRaye;我编辑以表明这一点。由于HEAD是完整回购的快照,
B
仍然会被跟踪,直到您
git rm
它。这使得引号中的定义有点错误:如果“last snapshot”=“tree associated with HEAD”,并且索引中但不在该树中的路径现在被“跟踪”,那么它应该说“跟踪文件是指最后一个快照、索引或两者中的文件”。我认为这是“跟踪文件”的准确描述。是的,我同意。我依赖于第二句的准确性(”未跟踪的文件是指所有其他文件(工作目录中不在上一个快照中且不在暂存区域中的任何文件)。目前,这两句话不一致,表明存在某种类型的文件未跟踪且未跟踪(“暂存?”)。但我认为目的是暂存更改是“用这个术语来说,我同意