的.gitignore忽略所有文件,然后递归允许*包含.foo
有已经类似于这样几个问题,但没有一个答案为我工作。的.gitignore忽略所有文件,然后递归允许*包含.foo
我想忽略我下面的资料库中的文件夹以外的所有带*包含.foo
(如果你想知道如何能够合理的文件 - 我其实是做一个Git仓库为我所有的“逻辑”项目 - 在Mac上的音乐软件 - 但我只想要存储实际的项目文件*。逻辑)
我要拼出来,所以我们都在同一块板上。 这是我做的,从头开始:
设置:
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
如果我输入“git add”。 - 没有改变,只有.gitignore被看到,我的2个文件被忽略。
为什么没有这个工作,你如何可以改变上面的程序,使其工作?
这里是非常类似的问题,我从拿到的.gitignore文件。 我使用的git --version 1.7.7(也试过1.7.3) - .gitignore to ignore all files, then recursively allows files of a certain type
你的问题是,在开始/*
模式匹配在顶层的所有文件和目录 - 包括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 .
这个配置,你会发现你只有.gitignore
和*.foo
列为被提交的修改文件。
尽管如此,在我的现实世界版本中使用.logic文件,它神秘地不起作用。我重新创建了git repo,检查了一百万次,完全复制.gitignore,更改为.logic,查找。 -name“* .logic”返回堆的文件,但这个.gitignore忽略所有的* .logic文件...一些愚蠢的事情肯定会发生......当我最终破解它时可能值得跟进评论 – PandaWood
@PandaWood:确保你没有'〜/ .gitconfig'中的'core.excludesfile'设置指向一个文件,该文件的模式会排除你的'* .logic'文件。 – camh
我没有得到这个,但当我试图将这些.logic文件上载到DropBox时,我得到了一个提示,它失败了。另一个提示是,我添加了!* .txt到.gitignore,因为我有几个文本文件,并且他们开始出现在跟踪列表中,不用担心。所以逻辑“文件”(例如bla.logic)实际上是“软件包” - 您在Mac Finder中点击并选择“显示软件包内容” - 因此git中的* .logic无法正常工作......我怎么能将这些“文件”存储在git中,可能是我的下一个问题;-) – PandaWood
等一下,你'GIT中添加.gitignore'和'git的承诺-m “添加gitignore”'? – Nic