我有这样的结构:
/.gitignore
/submodule/.gitignore
/submodule/file.txt
在我的子模块中,.gitignore
文件忽略file.txt
。这对于子模块非常合乎逻辑。但在我的根目录中,我想将"file.txt"
添加到回购中。这甚至可能吗?
!submodule/file.txt
将上面的行添加到/.gitignore
不起作用。因此,对于我的主要仓库,我想覆盖并将其添加到git,但子模块阻止我对文件进行版本控制。
答案 0 :(得分:1)
如果您确实需要这样做,请在主存储库中的某个其他目录(不是子模块)中跟踪此文件,并在子模块中为其创建符号链接。
所以你的结构就像:
/.gitignore
/submodule/.gitignore
/submodule/symlink_to_others_file.txt
/others/file.txt
答案 1 :(得分:1)
实际上,来自子模块的.gitignore
不会影响根存储库,反之亦然。您必须将根存储库和子模块存储库视为具有自己的.gitignore
文件的2个不同存储库。因此,如果您将file.txt
添加到rootrepo/submodule/.gitignore
,则无法将file.txt
置于子模块文件夹下,除非您强制git执行此操作(git add --force file.txt
)。与此同时,您必须完全添加rootrepo/file.txt
。