Почему каталог в .gitignore все еще отслеживается "git status"? - PullRequest
0 голосов
/ 16 апреля 2020

Мой файл .gitignore состоит из

project/app/__pycache__

Но когда я запускаю git status, он сообщает об изменениях файлов в этом каталоге ...

mydomain:main satishp$ git status
On branch master
Your branch is up to date with 'origin/master'.

Changes not staged for commit:
  (use "git add/rm <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)



deleted:    project/app/__pycache__/__init__.cpython-37.pyc
    deleted:    project/app/__pycache__/models.cpython-37.pyc

Не должен включение этого каталога в .gitignore предотвратить это? Или я что-то не так делаю?

Ответы [ 2 ]

0 голосов
/ 16 апреля 2020

Это распространенный сценарий: вы зафиксировали некоторые файлы, и только позже вы поняли, что на самом деле их следует игнорировать.

Одним из решений является очистка кэша Git (адаптировано из Git Статья Тауэра ):

  1. Обновите ваш .gitignore с помощью соответствующих шаблонов (кажется, вы уже сделали это).
  2. Фиксация или sta sh любые выдающиеся изменения. Ваша рабочая копия должна быть чистой (т. Е. git status должна возвращать «ничего для фиксации, рабочее дерево чистое»)
  3. Использовать git rm с опцией --cached, чтобы удалить оскорбительные файлы / шаблоны, которые были случайно зафиксированы перед игнорированием, например,
git rm -r --cached project/app/__pycache__

Или укажите точные файлы / каталоги, например, git rm -r --cached path/to/file

Теперь вы можете добавить эти изменения в историю вашего репо: git add .

И зафиксировать их: git commit -m "Clean up ignored files"

Это должно вывести ваш репо на правильный путь.

0 голосов
/ 16 апреля 2020

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

...