Файлы, перечисленные в .gitignore, удаляются командой git rm - PullRequest
0 голосов
/ 22 марта 2020

У меня есть файл .gitignore с одним файлом:

 cat .gitignore
 README.md

Файл .gitignore имеет следующие разрешения:

ls -l README.md
-rw-r--r-- 1 tdun0002 1049089 113 Mar 21 18:54 README.md

Я не уверен в чем проблема, но когда я делаю git rm --force *, все удаляется, включая файл README.md, указанный в файле .gitignore.

Что я делаю не так?

1 Ответ

3 голосов
/ 22 марта 2020

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

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

Поскольку ваш README.md уже был в репо, когда вы добавили его в .gitignore, он продолжал оставаться отслеживаемым файлом.


Хотя это может и не решить вашу актуальную проблему: мне трудно разобраться, каково ваше намерение, так как это кажется проблемой XY - вы спрашиваете, почему то, что вы пытались не сработало, когда мы на самом деле не знаем, что вы пытались сделать. Две возможности, которые приходят на ум, обсуждаются ниже:

  1. Если ваше намерение состоит в том, чтобы не иметь README.md в репо, просто git rm это, тогда commit / push / et c.

  2. Если вы делаете хотите его в репо, он не должен быть , перечисленным в .gitignore file.

  3. Если вы хотите избавиться от всего, кроме нескольких файлов (и они чистые, в том смысле, что нет незафиксированных изменений), вы можете найти легче удалить лот, а затем просто проверить те, которые вы хотите сохранить. Что-то вроде git rm . ; git checkout HEAD -- README.md.

  4. Если вы хотите удалить только определенные c файлы, вы можете использовать подстановочные знаки, чтобы ограничить их. Например, git rm --dry-run [0-9a-zA-QS-Z]* не будет касаться файлов, начинающихся с R. Вы заметите, что я использовал --dry-run здесь, так как вы, вероятно, захотите проверить эту опцию, прежде чем разрешить ее на самом деле удалить. Как только вы будете довольны, он сделает все правильно, просто запустите его снова без этой опции.

Если вы пытаетесь достичь чего-то другого, было бы удобно, если бы вы могли расширить это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...