Почему .gitignore не игнорирует мои файлы?

133

См. Изображение ниже. Мой файл .gitignore должен игнорировать все файлы в src / dist, но это не так.

введите описание изображения здесь

Ричард
источник

Ответы:

235

.gitignoreигнорирует только файлы, которые еще не являются частью репозитория. Если вы уже git addредактировали некоторые файлы, их изменения все равно будут отслеживаться. Чтобы удалить эти файлы из репозитория (но не из файловой системы), используйте git rm --cachedих.

Эльмар Пейзе
источник
10
git rm --cached file_name.ext отлично подходит для обновления gitignore для одного файла. Спасибо.
sybozz
3
Я сделал это, но GitHub все еще хочет их отслеживать и добавлять.
Netside
103

Файл .gitignore гарантирует, что файлы, не отслеживаемые Git, останутся неотслеживаемыми.

Простое добавление папок / файлов в файл .gitignore не приведет к их отключению - они останутся отслеживаться Git.

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

Самый простой и тщательный способ сделать это - удалить и кэшировать все файлы в репозитории, а затем снова добавить их. Все папки / файлы, перечисленные в файле .gitignore, не будут отслеживаться. Из верхней папки в репозитории выполните следующие команды:

git rm -r --cached . git add .

Затем зафиксируйте свои изменения:

git commit -m "Untrack files in .gitignore"

Обратите внимание, что любые предыдущие коммиты с нежелательными файлами останутся в истории коммитов. При отправке на GitHub помните об истории коммитов, которая может содержать файлы .envили client_secret.json.

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

MarckK
источник
Спасибо за твой ответ. Это действительно помогло. Не забудьте также отправить репо в git
Крис Рид,
После использования git rm -r --cached .отката все изменения также работают для повторного добавления всех файлов, которые не должны быть исключены с помощью .gitignore .
Адам Гурвиц,
9

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

Чтобы игнорировать их, вам сначала нужно удалить их, git rmих, зафиксировать, а затем игнорировать их.

Игал С.
источник
9

Вы можете использовать это,

git rm -r --cached ./node_modules

если вы хотите игнорировать node_modules, например

Сэм Р
источник
4

Посмотрите на это: .gitignore не работает. И, в частности, замечание от ADTC:

Убедитесь, что ваш файл .gitignore использует кодировку ANSI или UTF-8. Если он использует что-то еще, например Unicode BOM, возможно, Git не может прочитать файл. - ADTC 14 декабря '17 в 12:39

Филипп Рэми
источник
0

Сначала удалите файл index.lock из репозитория git

rm -f .git/index.lock

а затем добавьте .gitignore

git add .gitignore
KayV
источник
0

Лучше создать файл .gitignore при запуске и упоминании файлов, которые мы хотим игнорировать. Если вы хотите игнорировать некоторые файлы, выполните gitrm -r --cached

Шивани
источник