如何忽略git文件夹但跟踪子文件夹

时间:2015-01-29 02:58:32

标签: git

我有一个git存储库,此时我尝试了很多东西以实现以下目的:

我的git个回购邮件中的目录结构是:

<project_name1>/bin/
<project_name1>/bin/data/
<project_name1>/src/
<project_name2>/bin/
<project_name2>/bin/data/
<project_name2>/src/

除了bin数据文件夹中的文件之外,我想使用.gitignore来忽略bin文件夹中的所有内容。

#ignore the bin folder...
/*/bin/*
#...but don't ignore anything in ./bin/data/ folder
!/*/bin/data/
!/*/bin/data/

以上失败了,这是我尝试过的许多轻微变化之一。但问题仍然存在。文件夹bin/data和文件夹bin/data/*中的所有文件都将被忽略。

我做错了什么?

2 个答案:

答案 0 :(得分:0)

几乎所有忽略麻烦的答案都是

git check-ignore -v $path

您显示的规则不会排除该文件夹。我打赌你在全局或回购排除列表的某个地方有一个bin/规则。

答案 1 :(得分:0)

我不确定你到底尝试了什么,但是这个存储库目录结构:

a/bin/bar
a/bin/data/foo
b/bin/data/foo

使用此.gitignore

/*/bin/*
!/*/bin/data/

使用git add -A后会导致此状态输出:

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)

    new file:   a/bin/data/foo
    new file:   b/bin/data/foo

发言:a/bin/bar中的bin/data文件将会跟踪{{1}}。


我使用的是git 1.9.4版。有关详细信息,请查看documentation