gitignore - 仅允许特定的扩展名和文件。

35

我正在使用以下代码来忽略除了特定文件名和扩展名之外的所有文件

*
!.gitattributes
!.gitignore
!readme.md
!.gitkeep
!*.php

由于某些原因,它只允许我提交 .gitignore 和 readme.md,即使我在子文件夹中有 php 文件等。 有什么问题吗? 只是提醒一下,我正在使用“git add -A”来获取要提交的文件。


这个链接中的答案对我有用,只需在末尾添加!.gitignore - Ivan Ferrer Villa
2个回答

62
解决方法是告诉Git不要忽略子目录
*
!.gitattributes
!.gitignore
!readme.md
!.gitkeep
!*.php
!*/
否则,只有第一个目录级别中的*.php文件将被接受,而所有子目录都将被忽略。

2
使用*.。在顶部加上将排除任何子目录中的*.php文件。这个答案是不正确的。 - alpha_989
我必须将 !*/ 行移动到 * 后面才能使其正常工作。 - Chamod

16

最复杂的实现方法是在代码库的根目录中创建.gitignore文件,并将以下行添加到.gitignore文件中。

*.*
!.gitattributes
!.gitignore
!readme.md
!.gitkeep
!*.php
这将递归地包含目录及其子目录中的所有指定文件。
已在Git版本2.12.2.windows.2上测试。

4
我喜欢这个回答胜过被采纳的那个,因为它不仅适用于一层递归,而是能够更广泛地运用。 - Magnus
2
这种方法无法忽略没有扩展名的文件。 - ojchase
@ojchase 的确如此,但它仍然完全解决了我的个人使用情况,因为如果出现不应被跟踪的文件,我可以添加适当的结尾。 - xeruf

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接