2015-03-31 122 views
0

所以我读了Version Control with Git, 2nd Edition,我无意中发现了这一段(第51章的“使用Git添加”当文件被修改时,git中保存了多少个文件版本?

你的大部分仓库里的一天到一天的变化将可能是简单的编辑。在 之后,在提交更改之前,运行git add以更新索引 文件的绝对最新版本和最佳版本。 如果你不这样做,你将有两个不同的 版本的文件:一个在对象存储中捕获并从索引引用,另一个在你的工作目录中。

让我困惑的是粗体句子。 假设我做了相反的事情,我更改了一个文件,然后我运行了git add,现在文件已经上演。好吧,在我看来,现在我又有了两个不同版本的文件:一个在对象存储中捕获,另一个在我的工作目录中并引用索引。区别仅在于索引现在引用工作目录中的文件而不是回购中的文件。

我错过了一些作者想要强调的见解吗? “git”中可以存在多少个不同版本的文件? “混帐”也不明确,但我想这意味着在工作目录+对象存储+索引。

回答

1

正在传达的关键概念是你已经理解的一个概念:git add步骤对于防止工作树和索引彼此不同。

“两个不同的版本”显然不是意味着只有两个版本都可以存在;它更强调工作树中的内容否则不包含在索引中,git新手常常无法掌握的概念。

1

如果你编辑一个文件,但不加它,git将有2个版本,因为它不在对象存储中管理。在你添加它之后,你在本地的版本现在是git对象存储的一个版本

+0

该文档明确提到了“简单编辑”,而不是创建新文件,因此对象存储中的副本清楚地*存在于场景中,甚至是预先提交。 (当然这很迂腐,但是这个问题是由于OP在阅读文档时出现的,并且期望它是迂回正确的,而不是它的意图)。 – 2015-03-31 21:53:36

相关问题