Шаблоны в файле .gitignore и других местах

Найдите ниже две цитаты из этой ссылки:

1) In DESCRIPTION:

  • Шаблоны считываются из командной строки для тех команд, которые их поддерживают.

2) В PATTERN FORMAT (выделено мной):

  • #P3#

Обе кавычки (вторая выделена жирным шрифтом выше), по-видимому, относятся к команде git ignore (а не к файлу), которая упоминается в этот ответ в SO. Проблема, которую я здесь вижу, заключается в том, что эта команда даже не упоминается в Pro Git book. Таким образом, может быть, моя интерпретация приведенных выше цитат просто неверна.

У меня есть еще один вопрос о файле .gitignore, и он касается этого комментария в SO, что я повторяю ниже:

You can put .gitignore anywhere in a git project - if a path starts with /, it will be relative to the location of the .gitignore file; otherwise it will refer recursively to files in the current directory and its descendant directories.

Я просто не понимаю, как вывести это из приведенной выше ссылки.


person John Kalane    schedule 14.05.2016    source источник
comment
Что касается вашего второго вопроса - вот выдержка из предоставленной вами ссылки: Patterns read from a .gitignore file in the same directory as the path, or in any parent directory, with patterns in the higher level files (up to the toplevel of the work tree) being overridden by those in lower level files down to the directory containing the file. These patterns match relative to the location of the .gitignore file. A project normally includes such .gitignore files in its repository, containing patterns for files generated as part of the project build.   -  person ingenious    schedule 14.05.2016
comment
Команда git ignore в ответе, на который вы ссылались, не является частью git. В том же ответе есть ссылка на репозиторий, из которого можно получить команду.   -  person ingenious    schedule 14.05.2016
comment
@ingenious Что касается отрывка, который вы предоставили выше, я должен сказать, что я вообще его не понял, и из-за этого я не вижу связи между этим и комментарием ОП, на который я ссылался в мой вопрос. Возможно, вы могли бы предоставить ответ, объясняющий более подробно, о чем этот отрывок. Спасибо.   -  person John Kalane    schedule 14.05.2016
comment
@ingenious The git ignore command in the answer you've referenced is not part of git Но к чему относятся эти две кавычки, если не к этой команде?   -  person John Kalane    schedule 14.05.2016


Ответы (1)


Итак, кажется, есть некоторое недоразумение. Статья на сайте pro git о gitignore относится к файлу .gitignore, а не к команда. Команда, упомянутая в другом вопросе, не является частью git, а частью пакета git extras вместо этого.

Подумав еще немного, я думаю, что начинаю понимать, что здесь сбивает с толку. Вы только что процитировали (часть) порядок, в котором git оценивает шаблоны игнорирования. В самом верху этого заказа находятся patterns from the command line. Все это встроенные и настраиваемые (как в упомянутом ответе) команды, которые обрабатывают шаблоны игнорирования git.

Вторую цитату, вероятно, лучше всего объясняют примеры в нижней части справочной страницы gitignore. Я говорю о:

$ git status
[...]
# Неотслеживаемые файлы:
[...]
# Документация/foo.html
# Документация/gitignore.html
# файл. o
# lib.a
# src/internal.o
[...]
$ cat .git/info/exclude
# игнорировать объекты и архивы в любом месте дерева.
*.[oa]
$ cat Documentation/.gitignore
# игнорировать сгенерированные файлы html,
*.html
# кроме foo.html, который поддерживается вручную
!foo .html
$ git status
[...]
# Неотслеживаемые файлы:
[...]
# Documentation/foo.html
[...]

Также вполне допустимо размещать файл gitignore в любом месте вашего проекта, см. официальную документацию по gitignore еще раз:

Git обычно проверяет несколько источников в следующем порядке приоритета, от высшего к низшему:
- командная строка
- файл .gitignore в том же каталоге, что и путь, или в любом родительском каталоге, при этом шаблоны в файлах более высокого уровня (до верхнего уровня рабочего дерева) переопределяются шаблонами в файлах более низкого уровня ниже в каталог, содержащий файл. Эти шаблоны совпадают с расположением файла .gitignore. Проект обычно включает такие файлы .gitignore в свой репозиторий, содержащий шаблоны для файлов, сгенерированных как часть сборки проекта.

И часть о ведущей косой черте описана в следующем абзаце:

Начальная косая черта соответствует началу пути. Например, «/*.c» соответствует «cat-file.c», но не «mozilla-sha1/sha1.c».

Другими словами, шаблон обычно оценивается как глобус, за которым следует шаблон, и он будет соответствовать любому пути в любом подкаталоге относительно местоположения файла .gitignore. Однако, если шаблон начинается с косой черты, это означает, что шаблон соответствует точно с начала относительного имени пути.

person ingenious    schedule 14.05.2016