git rm - fatal: pathspec не соответствовал никаким файлам
я случайно добавил более 9000 фотографий в свою папку проекта. И совершил их. Затем удалил их с диска. Привержен.
теперь я пытаюсь нажать изменения на Git server. Но это занимает слишком много времени и пытается отправить 12 Гб данных.
Я проверил размер файлов на диске и вижу, что действительно .git
папка занимает 12 Гб.
Как удалить фотографии оттуда? Я пытался!--3-->, но терпит неудачу:
❯ git rm public/photos
fatal: pathspec 'public/photos' did not match any files
потому что я уже удалил их с диска, но они все еще в .
Я пытался добавить public/photos
to .gitignore
:
public/photos/
*.zip
но результата нет. Конечно, я мог бы!--7--> к моменту, когда у меня не было так много нежелательных фотографий в моем проекте. Но с тех пор я совершал много раз и внес много изменений в код.
5 ответов
в вашем случае, использовать git filter-branch
вместо git rm
.
git rm
удалит файлы в том смысле, что они больше не будут отслеживаться git, но это не удаляет старые объекты фиксации, соответствующие этим изображениям, и поэтому вы все равно будете застрять с нажатием более ранних фиксаций, которые соответствуют 12 ГБ изображений.
на git filter-branch
, С другой стороны, можно удалить эти файлы из всех предыдущих коммитов, а также, таким образом, покончить с необходимость подтолкнуть любого из них.
-
используйте команду
git filter-branch --force --index-filter \ 'git rm -r --cached --ignore-unmatch public/photos' \ --prune-empty --tag-name-filter cat -- --all
после завершения ветви фильтра убедитесь, что непреднамеренный файл не был потерян.
-
теперь добавьте a .правило гитюдного
echo public/photos >> .gitignore git add .gitignore && git commit -m "ignore rule for photos"
-
Теперь нажимаем
git push -f origin branch
Регистрация этой, этой и этой для получения дополнительной помощи. Просто на более безопасная сторона, я бы предложил вам создать резервную копию РЕПО в вашей системе, прежде чем приступать к этим инструкциям.
Что касается вашего оригинального сообщения об ошибке, это происходит потому, что вы уже отследили их с помощью git rm
, и, следовательно, git жалуется, потому что он не может удалить файл, который он не отслеживает. Читать подробнее об этом здесь.
очень простой ответ.
Шаг 1:
Сначала добавьте свои неотслеженные файлы, которые вы хотите удалить с помощью git add .
или git add <filename>
.
Шаг 2:
затем удалите их легко с помощью команды git rm -f <filename>
здесь rm=удалить и - f=forcely.
Шаг 1
добавьте имя файла(ов) в свой .
Шаг 2
git filter-branch --force --index-filter \
'git rm -r --cached --ignore-unmatch YOURFILE' \
--prune-empty --tag-name-filter cat -- --all
Шаг 3
git push -f origin branch
большое спасибо @mu.
git stash
сделал работу,
Он восстановил файлы, которые я удалил, используя rm
вместо git rm
.
Я сделал сначала проверку последнего хэша, но я не считаю, что это требуется.
эти цепи работают в моем случае:
git rm -r WebApplication/packages
было подтверждение git-dialog. Вы должны выбрать опцию" y".
git commit -m "blabla"
git push -f origin <ur_branch>