1

我对 git add 操作很好奇,所以我做了一些测试。

创建索引

1. git init
2. mkdir mydir
3. echo "hello" > mydir/hello
4. find .git/objects  ==> nothing 
5. git add .
6. find .git/objects ==> only find one file ,by cat-file,  I am sure it is hello 

做一些改变

7. rm mydir/hello

取回文件

8. git checkout mydir/hello
9. ls mydir/hello ==> hello is back

我的疑问是:当我这样做时'git add .',只会创建一个 blob,而不是创建一棵树来记录直接的“mydir”。那么,如何git checkout mydir/hello才能找到 blob 呢?

4

1 回答 1

1

git索引不会在内部或外部创建树对象。目录结构在它们包含的 blob 的文件名中表示,直到提交(及其关联的树对象)。

因此,在您的示例中,文件名按字面意思表示为mydir/hello并与您看到的 blob 相关联。

来源

于 2012-06-27T13:35:03.520 回答