¿Cómo gitignore * solo * files?

Me sorprende que los patrones simples como * .user en un file .gitignore parecen coincidir con los nombres de files y carpetas.

ringods$ mkdir TestIgnore ringods$ cd TestIgnore/ ringods$ git init Initialized empty Git repository in /Users/ringods/Projects/hostbasket/TestIgnore/.git/ ringods$ git status # On branch master # # Initial commit # nothing to commit (create/copy files and use "git add" to track) ringods$ mkdir security.user ringods$ touch security.user/file_may_not_be_ignonetworking.txt ringods$ git status # On branch master # # Initial commit # # Untracked files: # (use "git add <file>..." to include in what will be committed) # # security.user/ nothing added to commit but untracked files present (use "git add" to track) ringods$ echo "*.user"> .gitignore ringods$ cat .gitignore *.user ringods$ git status # On branch master # # Initial commit # # Untracked files: # (use "git add <file>..." to include in what will be committed) # # .gitignore nothing added to commit but untracked files present (use "git add" to track) 

¿Tengo una expectativa incorrecta? ¿Cómo puedo escribir un simple ignorar files con la extensión blah y evitar que coincidan las carpetas que terminan en .blah ?

La página de manual de gitignore menciona que los patrones sin / coinciden con la funcionalidad de patrón global del shell, pero realmente no me dice si coincide solo con los files o con los files y directorys.

Solutions Collecting From Web of "¿Cómo gitignore * solo * files?"

.gitignore patrones .gitignore solo coinciden con inputs de directory o routes. No hay una manera específica de decir "solo coincide con un file normal", sin embargo, si proporciona un seguimiento / entonces el patrón solo coincidirá con un directory. Puedes usar esto para unir no-directorys (que es casi lo que quieres) con dos patrones:

 *.user # ignore all paths ending in '.user' !*.user/ # but don't ignore these paths if they are directories.