11

我们一直在研究 git 子模块,我们想知道使用子模块的存储库与在另一个存储库中使用 .gitignore 文件的存储库相比有什么优势(如果有的话)。

没有子模块的示例:

mkdir a
cd a
git init
touch test1.txt
echo "b" > .gitignore
git add .
git commit -m "Adding test1.txt and gitignore"

mkdir b
cd b
git init
touch test2.txt
git add .
git commit -m "Adding test2.txt"

git log
cd ..
git log
4

1 回答 1

19

当您提交时,(子模块的)git parent 将跟踪子模块的分支和标签 ID。这将确保当您签出父级(在已知版本)时,子模块也将包含其正确的标签。

如果如上所述,它恰好是一个被忽略的子目录,那么基本上这些是两个独立的 git 存储库,就好像它们不是文件系统层次结构的一部分。

于 2009-09-22T21:36:33.813 回答