.gitignore规则不起作用

时间:2012-08-23 11:39:12

标签: gitignore

我正在建立一个Lemonstand网站,我正在通过git进行管理。因此,我使用以下.gitignore规则:

# Lemonstand
.htaccess
php.ini
boot.php
index.php
install.php
/config/*
/controllers/*
/init/*
/logs/*
/phproad/*
/temp/*
/uploaded/*
/installer_files/*
/modules/backend/*
/modules/blog/*
/modules/cms/*
/modules/core/*
/modules/session/*
/modules/shop/*
/modules/system/*
/modules/users/*
# add content_*.php if you don't want erase client changes to content

/modules/gallery/*
/modules/lddevel/*
/modules/tweak/*

(顶部块I got from github,第二个块是我自己添加的一些额外规则,以避免Lemonstands更新系统出现问题。)

我的问题是我正在向Lemonstand添加一个自定义发票,其中(长话短说)需要在/modules/shop/invoice_templates/中添加一个文件夹和一些文件,我将其命名为{{1 }}

因为这是默认的Lemonstand的额外内容,我想用git跟踪这个,所以我试图在gitignore文件的底部使用以下规则:

cm_standard

但是,当我执行!/modules/shop/invoice_templates/cm_standard/* 时,它不会获取该目录中的文件。即使我做了git add -A,它告诉我:

git add modules/shop/invoice_templates/cm_standard/*

这进一步暗示我没有正确地写出规则 - 任何人都可以帮忙吗?谢谢。

1 个答案:

答案 0 :(得分:1)

忽略具有较少路径段的模式可以优先于具有更多路径段的模式,因此在您的情况下/modules/shop/*优先于!/modules/shop/invoice_templates/cm_standard/*,从而有效地修剪整个/modules/shop/invoice_templates/目录遍历甚至在它查看!/modules/shop/invoice_templates/cm_standard的内容之前。话虽如此,排序也很重要,当它发生时,有点违反直觉,后来文件中的规则优先于先前的规则。

这个问题与How do gitignore exclusion rules actually work?非常相似,所以我建议你阅读。另外,您可能会发现check-ignore子命令在debugging rules时很有用 - 我在过去的几个月里将它添加到git中,它刚刚出现在几天前发布的1.8.2版本中。