#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 уже отслеживает их, хорошо…. вы знаете.