主存储库中的跟踪文件在子模块中被忽略
Track file in master repository which is ignored in submodule
我有这样的结构:
/.gitignore
/submodule/.gitignore
/submodule/file.txt
在我的子模块中,.gitignore
文件忽略了 file.txt
。这对于子模块来说非常合乎逻辑。但是在我的根目录中,我想将 "file.txt"
添加到回购协议中。这可能吗?
!submodule/file.txt
将上面的行添加到 /.gitignore
不起作用。所以对于我的主要回购,我想覆盖并将其添加到 git 但子模块阻止我对文件进行版本控制。
不,你不能那样做。子模块中的任何文件都不能添加到主项目中。跟踪不跟踪无所谓,只是命名空间重叠,无法添加。
如果你真的需要这样做,那么在主存储库的其他目录(不是子模块)中跟踪这个文件,并在你的子模块中创建一个指向它的符号链接。
所以你的结构变成了这样的:
/.gitignore
/submodule/.gitignore
/submodule/symlink_to_others_file.txt
/others/file.txt
实际上来自子模块的 .gitignore
不会影响根存储库,反之亦然。您必须将根存储库和子模块存储库视为 2 个不同的存储库,它们有自己的 .gitignore
文件。因此,如果您将 file.txt
添加到 rootrepo/submodule/.gitignore
,您将无法将 file.txt
放置在子模块文件夹下,除非您强制 git 这样做 (git add --force file.txt
)。同时你必须完全同意添加 rootrepo/file.txt
.
我有这样的结构:
/.gitignore
/submodule/.gitignore
/submodule/file.txt
在我的子模块中,.gitignore
文件忽略了 file.txt
。这对于子模块来说非常合乎逻辑。但是在我的根目录中,我想将 "file.txt"
添加到回购协议中。这可能吗?
!submodule/file.txt
将上面的行添加到 /.gitignore
不起作用。所以对于我的主要回购,我想覆盖并将其添加到 git 但子模块阻止我对文件进行版本控制。
不,你不能那样做。子模块中的任何文件都不能添加到主项目中。跟踪不跟踪无所谓,只是命名空间重叠,无法添加。
如果你真的需要这样做,那么在主存储库的其他目录(不是子模块)中跟踪这个文件,并在你的子模块中创建一个指向它的符号链接。
所以你的结构变成了这样的:
/.gitignore
/submodule/.gitignore
/submodule/symlink_to_others_file.txt
/others/file.txt
实际上来自子模块的 .gitignore
不会影响根存储库,反之亦然。您必须将根存储库和子模块存储库视为 2 个不同的存储库,它们有自己的 .gitignore
文件。因此,如果您将 file.txt
添加到 rootrepo/submodule/.gitignore
,您将无法将 file.txt
放置在子模块文件夹下,除非您强制 git 这样做 (git add --force file.txt
)。同时你必须完全同意添加 rootrepo/file.txt
.