.gitignore忽略所有文件,然后recursion地允许* .foo
已经有几个类似的问题,但没有答案为我工作。
我想忽略文件夹下面的文件夹中的所有内容,除了带有* .foo的文件
(如果有人想知道这是如何合理的 – 我实际上是为我所有的“逻辑”项目制作git仓库 – mac上的音乐软件 – 但我只想存储实际的项目文件* .logic)
我要拼出来,所以我们都在同一个盘子上。 以下是我从头开始做的事情:
build立:
mkdir temp cd temp mkdir testdir cd testdir touch include.foo touch dontinclude.bad cd.. git init touch .gitignore
将其粘贴到.gitignore中
# Ignore all /* # But not these files... !.gitignore !*.foo
git状态
而唯一未跟踪的文件是.gitignore
如果我input“git add”。 – 没有改变,只有.gitignore被看到,我的2个文件被忽略。
为什么这不起作用,你怎么能改变上面的程序,使其工作?
这里是我得到.gitignore文件的极其类似的问题。 我使用git –version 1.7.7(也试过1.7.3) – .gitignore忽略所有文件,然后recursion地允许某种types的文件
你的问题是,开头的/*
模式匹配顶层的所有文件和目录 – 包括testdir
,所以testdir
中的所有内容都被忽略。
这是你想要的:
# Ignore everything * # Don't ignore directories, so we can recurse into them !*/ # Don't ignore .gitignore and *.foo files !.gitignore !*.foo
当你做一个git add .
使用这个configuration,你会发现你只有.gitignore
和*.foo
文件被列为要提交的更改。