我该在哪里查看gitsubmodules(7)
中提到的gitlink项?
对于工作目录位于path/to/bar/
的子模块,gitlink条目应位于/path/to/bar
并包含子模块提交的SHA-1散列值?
$ git submodule status
139dedcb98fca8fb69d70305709783ff40316cd4 tabulous (0.5.0-2-g139dedc)
24afe922e6a05891756ecf331f39a1f6743d3d5a vim-repeat (v1.2-9-g24afe92)
f51a26d3710629d031806305b6c8727189cd1935 vim-surround (v2.1-18-gf51a26d)
$ ls -la tabulous/
total 72
drwxr-xr-x 8 nlykkei staff 256B Apr 5 17:25 ./
drwxr-xr-x 5 nlykkei staff 160B Apr 4 12:00 ../
-rw-r--r-- 1 nlykkei staff 67B Apr 4 12:00 .git
-rw-r--r-- 1 nlykkei staff 21B Apr 4 12:00 .gitignore
-rw-r--r-- 1 nlykkei staff 18K Apr 4 12:00 LICENSE
-rw-r--r-- 1 nlykkei staff 5.0K Apr 5 17:25 README.md
drwxr-xr-x 4 nlykkei staff 128B Apr 5 17:25 doc/
drwxr-xr-x 3 nlykkei staff 96B Apr 5 17:25 plugin/
$ cat tabulous/.git
gitdir: ../../../../../.git/modules/vim/pack/bundle/start/tabulous
man 7 gitsubmodules
:
...
Assuming the submodule has a Git directory at $GIT_DIR/modules/foo/ and a working directory at path/to/bar/, the superproject tracks the submodule via a gitlink entry in
the tree at path/to/bar and an entry in its .gitmodules file (see gitmodules(5)) of the form submodule.foo.path = path/to/bar.
The gitlink entry contains the object name of the commit that the superproject expects the submodule's working directory to be at.
path/to/bar
路径下的树中有一个gitlink条目”是错误的吗?您对gitlink的解释与此不同。 - Shuzhenggit ls-tree -rd
的输出:160000 commit 139dedcb98fca8fb69d70305709783ff40316cd4 vim/pack/bundle/start/tabulous
。 "commit" 是 "submodule" 的同义词吗?即git
知道对象 ID 引用了一个子模块,因为它的类型是 "commit"(或者 "commit" 还可以表示其他东西,而不是 "submodule" 吗?) - Shuzhenggit submodule
助手都没有关系。该条目是一个提交 ID。这就是 "gitlink" 的含义:一个保存提交 ID 而不是 blob 或嵌套树 ID 的条目。但它仍然是为该路径记录的 ID。这是应该存在的,以使工作树与提交的内容匹配。 - jthill