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 .'、そこには1つのブロブしか作成されず、ディレクトリ「mydir」を記録するツリーは作成されません。では、どうすればgit checkout mydir/helloブロブを見つけることができますか?

4

1 に答える 1

1

インデックスはgit、内部または外部でツリーオブジェクトを作成しません。ディレクトリ構造は、コミット(およびそれに関連するツリーオブジェクト)が行われるまで、含まれるBLOBのファイル名内で表されます。

したがって、あなたの例では、ファイルの名前は文字通りとして表されmydir/hello、あなたが見たブロブに関連付けられています。

出典

于 2012-06-27T13:35:03.520 に答える