Если файл отслеживается, его присутствие в игнор файла игнорируется (если можно так выразиться :-)).
Я всегда говорил, что .gitignore
- это неправильное имя файла, потому что это не «список файлов для игнорирования». Вместо этого у него есть две цели. Git проверяет запись игнорируемых файлов в двух случаях:
- , когда речь идет о тисках, что есть неотслеживаемый файл или
- , когда речь идет о колошматить файл и не уверен, если это разрешено.
Первый случай наиболее часто виден из git status
: добавление файла или шаблона, в игнор файлы говорит мерзавец «, пожалуйста, заткнись о *.o
и тому подобное, они не должны быть отслежены, так дон «Не жалуйтесь, что их не отслеживают». В этом случае записи, вероятно, должны быть в файле с именем .git-shut-up-about-these-files
.
Второй случай немного более коварный. Допустим, у вас в репозитории git есть фиксация с файлами a1
и a2
, и это ваш текущий commit (потому что это кончик ветки или потому что вы сделали git checkout <commit>
или что-то еще, и эти два файла находятся в этом commit: для аргументации скажем, что это фиксация наконечника на master
). Давайте также скажем, что у вас есть еще совершить 1234567
только с файлом a1
, no a2
. Если вы сейчас сделаете:
git checkout 1234567
мерзавец должен удалить файл a2
. Это нормально, потому что это в вашей другой фиксации (кончик master
), a2
есть. Если вы переключитесь обратно:
git checkout master
мерзавец воссоздает a2
.
Но что, если на кончике master
, есть файл с именем important
это не в 1234567
? Вы git checkout 1234567
, а затем остановиться и сделать некоторые важные примечания:
$EDITOR important
Вы выписывать эти важные заметки и выйти из редактора, а затем принять решение git checkout master
.Git теперь должен сжимать заметки, которые вы только что написали, потому что в конце master
содержится файл с именем important
.
Что git будет делать в этом случае, это проверить свои файлы игнорирования для имени important
. Если это так, git может стереть этот файл и заменить его на коммит. Если не, git checkout
предупреждает, что проверка будет перезаписана important
и попросит вас сначала ее снять.
Эти записи имен файлов, вероятно, должны быть в файле с именем .git-go-ahead-and-clobber-these-files-they-are-unimportant
.
Отметьте, что нет записи, которую вы можете сделать, чтобы отметить файл «не хранить в репозитории, но драгоценный: не сбивать».
Идеальный смысл. Благодаря! – Benjamin