我有一个directoryA
包含我通过创建的子目录git clone
我想为directoryA
.
但是当我什么都不做git add -A && git commit -m "w"
时。
我需要特别注意处理git-cloned subdirectories
吗?
directoryA
是我用于我的项目的库集合的特殊目录。
一般来说,git
不允许有一个 git 存储库位于另一个的子目录中。
此规则的唯一例外是使用git submodules。但是,这还有很多其他你可能不喜欢的含义。例如,父 git 存储库必须跟踪必须签出的特定提交 id 子模块。如果您将新内容提交到子模块 - 在本地或从外部拉取,您还必须更改父仓库状态并再创建一个提交以反映子模块状态。
为了解决这些问题,Android 项目创建了另一种处理这些问题的方法,即他们创建了repo
. 虽然repo
主要由 Android 项目使用,但它是一种非常通用的机制,可用于任何其他目的。
repo
依赖于名为 manifest 的 XML 文件(它存在于自己的小型 git 存储库中)。清单定义了定义整个项目的所有 git 存储库在哪里签出以及在哪些修订和分支。这是一个非常强大的机制。repo 唯一的限制是它不支持 Windows,因为它需要使用符号链接(但 Linux 和 Mac 支持得很好)。
您正在创建的是未初始化的子模块,是的,子模块需要一些特殊处理才能有效地使用它们。
初始化子模块后,您将能够从父项目提交它所在的子目录。
子模块超越了基本的 git,具有更多的学习曲线,但一旦被理解就可以很好地发挥其作用,并与 git 的其余部分很好地融合。
子模块处理的特殊之处可以概括为几个关键概念:
当我需要深入研究子模块时,这里有一些对我非常有帮助的链接,这对于跟踪我的项目的各个部分非常有帮助。