Как добавить файлы без точек в них (все файлы без расширения) в файл gitignore? - программирование
Подтвердить что ты не робот

Как добавить файлы без точек в них (все файлы без расширения) в файл gitignore?

Как говорится в заголовке, можно ли добавить в файл gitignore "файлы без точек"?

Я предполагаю, что это позаботится обо всех этих назойливых файлах без расширения.

4b9b3361

Ответ 1

Вы можете попробовать комбинацию, похожую на:

*
!/**/
!*.*

Это правило gitignore исключений (отрицательный шаблон) должно игнорировать все файлы, кроме тех, с расширением.

Как упоминалось ниже Mad Physicist, правило:

Невозможно повторно включить файл, если родительский каталог этого файла исключен. (*) < ш > (*: если определенные условия не выполняются в git 2.?, см. ниже)

Вот почему !/**/ важен (белым списком родительских папок рекурсивно), если мы хотим иметь файлы белого списка.

Я упомянул то же правило в подобных случаях, как:


Как Jakub Narębski комментарии, вы можете не игнорировать все файлы без расширения.

Мой совет:

  • добавьте сначала файл без расширения, который имеет значение
  • затем отредактируйте свой .gitignore, как показано выше: файлы с версией не будут проигнорированы (даже если у них нет расширения). Все остальные будут проигнорированы.

Для любых будущих файлов без расширения, которые вы хотели бы изменить:

git add -f -- myFile

Обратите внимание, что при git 2.9.x/2.10 (в середине 2016?) возможно повторное включение файла, если родительский каталог этого файла исключен если в пути не добавлено подстановочного знака.

Nguyễn Thái Ngọc Duy (pclouds) пытается добавить эту функцию:

Однако, поскольку одно из правил повторного включения было:

Часть каталога в правилах повторного включения должна быть буквальной (т.е. без подстановочных знаков)

В любом случае это не сработало бы.

Ответ 2

*
!*/
!*.*

* сообщает git игнорировать все.

!*/, то unignores все, что является каталогом. Это важно.

!*.* unignores всех файлов с расширением.

Без правила !*/ каталоги без . в имени не будут перечислены, и ни один из ваших желаемых файлов не будет добавлен за пределы корневой папки.

Для справки, прочитайте эти два раздела в .gitignore документации:

Дополнительный префикс "!" что отрицает шаблон; любой соответствующий файл исключенный предыдущим шаблоном, снова включается. Это не можно повторно включить файл, если родительский каталог этого файла Исключенный. git не отображает исключенные каталоги для производительности причины, поэтому любые шаблоны на содержащихся файлах не имеют никакого эффекта, независимо от того, где они определены. Поместите обратную косую черту ( "\" ) перед первой "!" для шаблонов, которые начинаются с буквального "!" , например, "! Важно!.txt".

Если шаблон заканчивается косой чертой, он удаляется с целью после описания, но он найдет только совпадение с каталог. Другими словами, foo/будет соответствовать каталогу foo и paths под ним, но не будет соответствовать регулярному файлу или символической ссылке foo (это согласуется с тем, как метод pathspec работает вообще в Git).

Ответ 3

В моих папках много файлов с расширениями *.c, *.h, *.txt, *.csv и т.д., А также двоичные файлы без каких-либо расширений. Поэтому мне нужно было игнорировать все файлы, кроме .c,.h и .gitignore, так что это работа для меня: это мой пример .gitignore:

 */*         #ignore all files in each directory
 !*/*.c      #unignore .c files in each directory
 !*/*.h      #unignore .h header files in each directory
 !.gitignore #unignore .gitignore