如何在Git存储库中的[/ Libs/x64/Release]文件夹中包含lib文件

A9S*_*9S6 3 git pattern-matching gitignore

我有一个Git存储库,在根目录中包含一个Libs目录.此目录包含我想要包含在存储库中并推送到主仓库的所有已编译的.lib文件.Libs目录的结构是:

自由人
......-- | x64
........-- | 发布
........-- | 调试

问题是我无法使Git包含ReleaseDebug文件夹中的LIB文件.我认为它是因为gitignore排除了Release和Debug文件夹:

# Build results
[Dd]ebug/
[Rr]elease/
x64/
build/
[Bb]in/
[Oo]bj/
Run Code Online (Sandbox Code Playgroud)

我尝试了什么:

!/Libs/*/*.lib
!/Libs/x64/Release/*
Run Code Online (Sandbox Code Playgroud)

Von*_*onC 6

你需要使用:

git add --force Libs
Run Code Online (Sandbox Code Playgroud)

为了添加它们,尽管.gitignore.

您可以随时查看哪些.gitignore以及哪些规则.gitignore阻止您考虑使用以下特定文件夹:

git check-ignore -v /path/to/an/element
Run Code Online (Sandbox Code Playgroud)

修改您的.gitignore忽略特定的子文件夹,可以考虑" 的.gitignore排除文件夹,但包括具体的子文件夹 ",特别是:

如果你排除folder/,那么它下面的所有东西将永远被排除(即使一些后来的否定排除模式("unignore")可能与下面的东西相匹配folder/).(*)
(*:除非在git 2中满足某些条件.?,见下文)

例如,在你的情况下尝试(git 1.8.2+):

Libs/**/*
!Libs/x64/Release/
Run Code Online (Sandbox Code Playgroud)

请注意,使用git 2.9.x/2.10(2016年中期?),如果重新包含的路径中没有通配符,则可以重新包含该文件(如果排除该文件的父目录).

NguyễnTháiNgọcDuy(pclouds)正在尝试添加此功能:

这意味着,使用git 2.9+,这可能有效:

/Libs
!/Libs/x64/Release
Run Code Online (Sandbox Code Playgroud)