Файл .gitignore
- это способ указать, какие неотслеживаемые файлы останутся неотслеживаемыми, даже если вы попытаетесь добавить их (и, как правило, хорошая идея, что любые изменения в нем должны быть полностью зафиксированы перед попыткой операций, использующих эти изменения) , Это не способ сказать общим командам git
не делать вещи с файлом.
В частности, если файл уже находится в репо, когда вы добавляете его в .gitignore
, это будет иметь не влияет на него.
Поскольку ваш README.md
уже был в репо, когда вы добавили его в .gitignore
, он продолжал оставаться отслеживаемым файлом.
Хотя это может и не решить вашу актуальную проблему: мне трудно разобраться, каково ваше намерение, так как это кажется проблемой XY - вы спрашиваете, почему то, что вы пытались не сработало, когда мы на самом деле не знаем, что вы пытались сделать. Две возможности, которые приходят на ум, обсуждаются ниже:
Если ваше намерение состоит в том, чтобы не иметь README.md
в репо, просто git rm
это, тогда commit / push / et c.
Если вы делаете хотите его в репо, он не должен быть , перечисленным в .gitignore
file.
Если вы хотите избавиться от всего, кроме нескольких файлов (и они чистые, в том смысле, что нет незафиксированных изменений), вы можете найти легче удалить лот, а затем просто проверить те, которые вы хотите сохранить. Что-то вроде git rm . ; git checkout HEAD -- README.md
.
Если вы хотите удалить только определенные c файлы, вы можете использовать подстановочные знаки, чтобы ограничить их. Например, git rm --dry-run [0-9a-zA-QS-Z]*
не будет касаться файлов, начинающихся с R
. Вы заметите, что я использовал --dry-run
здесь, так как вы, вероятно, захотите проверить эту опцию, прежде чем разрешить ее на самом деле удалить. Как только вы будете довольны, он сделает все правильно, просто запустите его снова без этой опции.
Если вы пытаетесь достичь чего-то другого, было бы удобно, если бы вы могли расширить это.