小编典典

忽略 git 项目中的任何“bin”目录

all

我有一个这样的目录结构:

.git/
.gitignore
main/
  ...
tools/
  ...
...

在 main 和 tools 以及任何其他目录中,在任何级别,都可以有一个“bin”目录,我想忽略它(我也想忽略它下面的所有内容)。我已经在
.gitignore 中尝试了这些模式中的每一个,但它们都不起作用:

/**/bin/**/*
/./**/bin/**/*
./**/bin/**/*
**/bin/**/*
*/bin/**/*
bin/**/*
/**/bin/* #and the others with just * at the end too

谁能帮我吗?如果我这样做,第一个模式(我认为应该工作的模式)工作得很好:

/main/**/bin/**/*

但是我不想为每个顶级目录都有一个条目,也不想每次添加新目录时都必须修改 .gitignore 。

这是在 Windows 上使用最新的 msysgit。

编辑: 还有一件事,有些文件和目录的名称中包含子字符串“bin”,我不希望这些被忽略:)


阅读 230

收藏
2022-02-25

共1个答案

小编典典

在 1.8.2 版本之前,**.gitignore. 从 1.8.2 开始,git
支持**表示零个或多个子目录(请参阅发行说明)。

忽略目录树中当前级别以下任何位置的所有名为 bin 的目录的方法是使用.gitignore具有以下模式的文件:

bin/

man页面中,有一个忽略foo使用类似模式调用的目录的示例。

编辑:* 如果您的 git 索引中已经有任何您不再希望跟踪的 bin 文件夹,那么您需要明确删除它们。Git
不会仅仅因为它们现在匹配新.gitignore模式而停止跟踪已经被跟踪的路径。仅从索引 ( --cached ) 递归 ( -r
)执行文件夹删除 ( rm )。根 bin 文件夹的命令行示例:
***

git rm -r --cached bin
2022-02-25