.git克隆存储库时的属性

.git克隆存储库时的属性,git,attributes,clone,git-clone,Git,Attributes,Clone,Git Clone,讨论让我思考。如果我正在克隆一个具有.gittribute属性的现有存储库,该怎么办 此文件可能会向git指定哪些文件被视为文本,哪些文件不被视为文本。当我克隆此存储库时,git是否确保在签出文件之前读取此文件并使其生效 我做了一些实验,正如我所预料的那样,它似乎起了作用 这有文件记录吗 PS:.gittributes文件是否影响自身不在这个问题的范围之内 签出和签入 当git checkout和git merge等命令运行时,这些属性会影响存储库中存储的内容如何复制到工作树文件中。它们还影响G

讨论让我思考。如果我正在克隆一个具有.gittribute属性的现有存储库,该怎么办

此文件可能会向git指定哪些文件被视为文本,哪些文件不被视为文本。当我克隆此存储库时,git是否确保在签出文件之前读取此文件并使其生效

我做了一些实验,正如我所预料的那样,它似乎起了作用

这有文件记录吗

PS:.gittributes文件是否影响自身不在这个问题的范围之内

签出和签入 当git checkout和git merge等命令运行时,这些属性会影响存储库中存储的内容如何复制到工作树文件中。它们还影响Git如何在Git添加和Git提交时将您准备的内容存储在存储库的工作树中

当我克隆[a]存储库[我将为
git签出选择的提交在其中包含
.gittributes
文件]时,git是否确保在签出文件之前读取该文件并使其生效

这有文件记录吗

是的,朝向前面:

当工作树中缺少
.gittributes
文件时,索引中的路径将用作后备路径。在签出过程中,使用索引中的
.gittributes
,然后使用工作树中的文件作为回退

这里有点不清楚,索引本身与工作树填充是半同时填充的。整个过程就像通过一个大的原子事务一样完成,但实际上,这意味着Git从提交创建index1,然后使用索引中的内容填充工作树


1该“the”索引实际上是存储在
index.lock
中的新索引,稍后将通过原子重命名()操作成为索引。但是,在发生任何这种情况之前,Git必须扫描整个工作树并验证是否允许工作树更新,然后以伪原子方式执行工作树更新,然后将
index.lock
文件重命名为
index
,以通过释放锁来提交原子事务