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


Ответы:


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 после того, как вы поймете, что нежелательные файлы отслеживаются и сохраняются.


Спасибо за твой ответ. Это действительно помогло. Не забудьте также отправить репо в 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

0

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.