Не может игнорировать папку с файлами pckl, но может игнорировать все остальные папки

#python #git #pickle #gitignore

#python #git #рассол #gitignore

Вопрос:

У меня есть папка под названием dataset с файлами pickle для хранения моего набора данных машинного обучения. У меня также есть две другие папки с файлами jpg, в которых хранятся фактические изображения. Мой файл .gitignore имеет

 __pycache__/
train_images/
test_images/ 
dataset/
  

Это отлично сработало для обучающих и тестовых изображений, они полностью игнорируются. Но папка dataset не игнорируется и доступна для фиксации. Я уже пытался удалить его и создать новую папку, но это не сработало. Это мой текущий статус git

 On branch master
Changes not staged for commit:
  (use "git add/rm <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
    modified:   .gitignore
    modified:   CNN.py
    modified:   data_prep.py
    modified:   dataset/num_train_labels.pckl
    modified:   dataset/test_images.pckl
    modified:   dataset/test_labels.pckl
    modified:   dataset/train_images.pckl
    modified:   dataset/train_labels.pckl
    modified:   image_scraping.py
    modified:   main.py
    deleted:    test_images/test_image1.jpg
    deleted:    test_images/test_image2.jpg
    deleted:    train_images/train_image1.jpg
    deleted:    train_images/train_image2.jpg

no changes added to commit (use "git add" and/or "git commit -a")
  

Почему папка dataset не игнорируется?

Комментарии:

1. Вероятно, файлы там уже отслеживаются (поскольку они уже являются частью HEAD ). Если это так, вы можете удалить их, продвигаясь вперед, чтобы в более поздних версиях git не заботился о них: git rm --cached some-files

2. @eftshift0 когда я использовал git rm — кэшированный набор данных / имя файла называется фатальным: pathspec ‘dataset/num_test_labels.pckl’ не соответствует ни одному файлу

3. Хорошо…. Я сказал вам, что это условное решение. Можете ли вы вставить вывод status в вопрос?

4. @eftshift0 вот дерьмо, я только что понял, что ты сказал статус, а не git rm, я просто изменил его

5. Итак, вы хотели бы, чтобы эти файлы (которые отслеживаются) не сообщали вам, что они изменены, я правильно понял? Если это так, попробуйте с git update-index --assume-unchanged the-file . Это локальное репозиторий, поэтому, если другие разработчики захотят сделать то же самое, им придется запускать его и в своих репозиториях.

Ответ №1:

Я, наконец, заставил это работать. Благодаря eftshift0. Мне пришлось использовать

 git update-index --assume-unchanged filename
  

Я до сих пор не знаю, почему .gitignore не работает.

Комментарии:

1. .gitignore работает только для неотслеживаемых файлов. Учитывая, что git уже отслеживает их, хорошо…. вы знаете.