Чому .gitignore не ігнорує мої файли?


Відповіді:


219

.gitignoreлише ігнорує файли, які ще не є частиною сховища. Якщо ви вже git addредагували деякі файли, їх зміни все одно відстежуватимуться. Щоб видалити ці файли зі свого сховища (але не з вашої файлової системи), використовуйте git rm --cachedїх.


9
git rm - cached file_name.ext штрафує мене добре, щоб оновити gitignore для одного файлу. Дякую.
sybozz

3
Я це зробив, але GitHub все ще хоче їх відстежувати та додавати.
Netside

93

Файл .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
Chris Reed

Після використання git rm -r --cached .відкату всі зміни також працюють над повторним додаванням усіх файлів, які не слід виключати за допомогою .gitignore .
Адам Гурвіц

8

gitignore ігнорує лише незафіксовані файли. Ваші файли позначені як змінені - це означає, що вони були вчинені, а минуле та їхнє тепер відстежується git.

Щоб їх ігнорувати, спершу потрібно видалити їх, зробити git rmїх, а потім проігнорувати.


6

Ви можете використовувати git rm -r --cached ./node_modules. Припустимо, якщо ви хочете ігнорувати вузол


4

Подивіться на це: .gitignore не працює. Особливо зауваження від ADTC:

Переконайтеся, що ваш файл .gitignore використовує кодування ANSI або UTF-8. Якщо він використовує щось інше, як Unicode BOM, можливо, Git не може прочитати файл. - ADTC 14 грудня 177 о 12:39


0

Спочатку видаліть файл index.lock зі свого git repo

rm -f .git/index.lock

а потім додайте .gitignore

git add .gitignore
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.