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