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

时间:2014-05-23 05:01:40

标签: git pattern-matching gitignore

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

利布斯
...-- | 64
........-- |发布
........-- |调试

问题是我无法让Git在 Release Debug 文件夹中包含LIB文件。我认为它是因为gitignore排除了Release和Debug文件夹:

# Build results
[Dd]ebug/
[Rr]elease/
x64/
build/
[Bb]in/
[Oo]bj/

我尝试了什么:

!/Libs/*/*.lib
!/Libs/x64/Release/*

1 个答案:

答案 0 :(得分:6)

您需要使用:

git add --force Libs

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

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

git check-ignore -v /path/to/an/element

要将.gitignore修改为而不是,请忽略特定的子文件夹,请考虑“.gitignore exclude folder but include specific sub-folder”,尤其是:

  

如果您排除folder/,则其中的所有内容将始终被排除(即使某些后来的否定排除模式(“unignore”)可能与folder/下的内容匹配)。 (*
  (*:除非在git 2中满足某些条件。?,见下文)

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

Libs/**/*
!Libs/x64/Release/

请注意,使用git 2.9.x / 2.10(2016年中期?),如果排除该文件的父目录if there is no wildcard in the path re-included,则可能会重新包含文件。

Nguyễn Thái Ngọc Duy (pclouds)正在尝试添加此功能:

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

/Libs
!/Libs/x64/Release