我不确定,但这个问题突然在我的脑海中出现,所以我开始搜索它。我找到了很多关于staging的细节,但是没有找到git放置staged
文件的确切位置。我的意思是,git是否有一个文件或文件夹来缓存对已暂存文件和文件夹的引用?如果是,那么它是哪个文件?
暂存发生在 .git/index
和 .git/objects
内部。前者包含路径,后者包含文件内容。虽然它们都是二进制的。
~/projects/bae/.git$ tree .
.
├── HEAD
├── config
├── description
├── hooks
│ ├── applypatch-msg.sample
│ ├── commit-msg.sample
│ ├── post-update.sample
│ ├── pre-applypatch.sample
│ ├── pre-commit.sample
│ ├── pre-push.sample
│ ├── pre-rebase.sample
│ ├── prepare-commit-msg.sample
│ └── update.sample
├── info
│ └── exclude
├── objects
│ ├── info
│ └── pack
└── refs
├── heads
└── tags
8 directories, 13 files
~/projects/bae/.git$ cd ..
~/projects/bae$ touch test
~/projects/bae$ git add test
~/projects/bae$ cd .git
~/projects/bae/.git$ tree
.
├── HEAD
├── config
├── description
├── hooks
│ ├── applypatch-msg.sample
│ ├── commit-msg.sample
│ ├── post-update.sample
│ ├── pre-applypatch.sample
│ ├── pre-commit.sample
│ ├── pre-push.sample
│ ├── pre-rebase.sample
│ ├── prepare-commit-msg.sample
│ └── update.sample
├── index <-- NEW (contains paths)
├── info
│ └── exclude
├── objects
│ ├── e6
│ │ └── 9de29bb2d1d6434b8b29ae775ad8c2e48c5391 <-- NEW (contains file content)
│ ├── info
│ └── pack
└── refs
├── heads
└── tags
9 directories, 15 files
~/projects/bae/.git$
\215|XN\336\350^O\275\247\230v^@^Lbuild.gradle^@^@^@^@^@^@T|!\215^@^@^@^@T|!\215^@^@^@^@^A^@^@^D^AU\206\342^@^@\201\244^@^@^A\365^
@^@^@^T^@^@\307J\311z\213\333\220\210\323p\332~\210xJz ;\227^Z\242:^@!gradle/wrapper/gradle-wrapper.jar - user41871