如何在git仓库中递归地忽略所有隐藏的目录/文件?


128

我想让Git忽略所有隐藏的文件和目录。即

  • .aptitude
  • .ssh/
  • .bash_rc
  • config/.hidden

是否有一条简单的规则来涵盖此问题,而无需专门添加每个条目?

Answers:


165

只需添加一个模式 .gitignore

.*
!/.gitignore

编辑:添加了.gitignore文件本身(如果尚未提交,请注意)。


3
在此之后,您可能需要强制添加一些必要的文件。例如。.htaccess文件。当然根据您的要求。
dakdad 2011年

3
@dakdad:谢谢你的建议。改善了答案。如果Poe有一些特殊文件(例如.htaccess已签入),则将继续关注它们。gitignore仅对新文件很重要。
DanielBöhmer

@DanielBöhmer也许这正在摆脱话题,但是有没有理由只忽略/.gitignore每个.gitignore文件而不是忽略每个文件的原因吗?即为什么不列出!.gitignore(没有斜线)?
Jason Young

1
@JasonYoung有趣的问题。好的,这种模式只会忽略文件本身。对于复制和粘贴的示例,我发现它没有任何副作用,更加简洁。当然,您可以取消忽略.gitignore顶级文件中的任何.gitignore文件。但是,选择权取决于您。
DanielBöhmer

64

.gitignore将仅影响尚未“添加”的文件。

制作新的.gitignore条目会影响所有文件

  1. 对.gitignore进行更改
  2. git commit -a -m "Pre .gitignore changes"
  3. git rm -r --cached .
  4. git add .
  5. git commit -a -m "Post .gitignore changes"
  6. git status 应该输出“什么都不提交(工作目录干净)”

这里行“还没有被添加”是关键,因为如果您已经提交了给定的文件,则忽略将不再适用于他,您必须将其从存储库中删除,并在下次创建它时使用.gitignore会忽略它。
Georgi Peev

21

在中.git/info/exclude,添加以下行:

.*

这将使递归地忽略所有隐藏/点文件成为计算机上每个存储库的默认文件。这样.gitignore就不需要为每个回购使用单独的文件。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.