与使用 gitignore 将一个存储库放在另一个存储库中相比,使用 git 子模块有什么优势?

发布于 2024-08-05 01:31:33 字数 350 浏览 3 评论 0原文

我们一直在研究 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

We've been looking into git submodules and we are wondering what advantage (if any) is there in having a repository using submodules verses having a repository within another repository with a .gitignore file.

Example without submodules:

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

网名女生简单气质 2024-08-12 01:31:33

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

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

The git parent (of the submodules) will keep track of the branches and tag IDs of the submodules when you commit. That will ensure that when you check out the parent (at a known version) then the submodules will also contain their right tags.

If, as above, it just happens to be an ignored subdirectory, then basically these are two independent git repos, as if they'd not been part of a file system hierarchy.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文