正如问题中提到的,我有一个项目的根目录,其中包含四个子目录,每个子目录包含与项目的特定、单独方面相关的脚本/二进制文件和点文件。我应该初始化 git 存储库吗
- 在项目根目录下
- 每个子目录下有一个
- 两者(即,一个位于项目根目录中,一个位于每个目录中)
我目前在项目根目录上初始化了一个。当我git status
在那里运行时,它只显示已修改的子目录,而不显示其中更改的实际文件。因此,有了这个设置,我想知道我是否应该跑步git add <subdirectory>
或git add <path/to/file>
......从而开始我的困惑。
蒂亚!
答案1
关于存储库布局,您列出的所有选项都是可能的!最简单的选择是在项目根目录中创建一个 git 存储库。我建议您使用此选项,除非您的项目非常复杂。
当目录中的更改是独立的时,在每个子目录中创建一个子目录有其优点,但它会使存储库的使用变得复杂。
每个子目录下创建一个和项目根目录是您要使用的内容git 子模块。通过将所有目录设为 git 子模块,您可以将它们用作独立的存储库并单独提交更改,而根 git 存储库可用于跟踪特定子模块的哪些版本在一起。
关于输出git status
:如果一个目录是全新的,git status
实际上只会显示该目录 - 为简洁起见,这样输出就不会太长。实际上git 本身并不关心目录(也可以看看这个问题),仅涉及其中的文件。如果你有一个空目录,那么git就没有关系,并且你不能提交一个空目录。
Git 只会存储文件及其完整路径,例如directory/subdirectory/file
,而不会存储有关目录的信息。 (这就是为什么开发了几乎空目录的常见做法:创建一个空文件,称为.gitkeep
保留该目录而没有任何其他目录条目)
git add
因此,如果您是整个目录或其中的所有文件,则没有任何区别。添加目录只是告诉 git 添加该目录下所有文件的简写方式。