Мне нужно исключить папку (имя загрузки) из отслеживания. Я пытался бежать
git rm -r --cached wordpress/wp-content/uploads
и после этого я добавил путь к .gitignore
/wordpress/wp-content/uploads
но когда я побежал, git status
они отображаются как удаленные. Если я попытаюсь зафиксировать изменения, файлы будут удалены, а не только удалены из отслеживания.
Что я делаю неправильно?
Я также пытался
git update-index --assume-unchanged <file>
но это, кажется, отследить только файлы. Но мне нужно удалить из отслеживания целую папку (включая подпапки).
reset --hard
, это будет.pull
что-то еще, эти файлы будут удалены из новой системы.Ответы:
Я сталкивался с этим вопросом во время поиска в Google "git remove folder from tracking". Вопрос ОП привел меня к ответу. Я резюмирую это здесь для будущих поколений.
Вопрос
Как удалить папку из моего репозитория git, не удаляя ее с моего локального компьютера (т.е. среды разработки)?
Ответ
Шаг 1. Добавьте путь к папке в корневой
.gitignore
файл репо .Шаг 2. Удалите папку из локального git-трекинга, но сохраните ее на своем диске.
Шаг 3. Вставьте ваши изменения в ваш репозиторий Git.
Папка будет считаться «удаленной» с точки зрения Git (то есть они находятся в прошлой истории, но не в последнем коммите, а люди, извлекающие из этого репо, удалят файлы из своих деревьев), но остаются в вашем рабочем каталоге потому что ты использовал
--cached
.источник
Это работает для меня:
--ignore-unmatch
здесь важно, что без этой опции git завершит работу с ошибкой для первого файла, отсутствующего в индексе.источник
unknown option 'ignore unmatched'
git rm -r --cached --ignore-unmatch .idea/*.xml
Чтобы забыть каталог, рекурсивно добавьте
/*/*
в путь:Использование
git rm --cached
не подходит для совместной работы. Подробнее здесь: Как остановить отслеживание и игнорировать изменения в файле в Git?источник
Я знаю, что это старая ветка, но я просто хотел добавить немного, поскольку отмеченное решение не решило проблему для меня (хотя я пробовал много раз).
Единственный способ остановить git-форму, отслеживающий папку, - это сделать следующее:
git rm -r --cached your_folder/
your_folder/
в .gitignoreТеперь вы должны увидеть, что папка больше не отслеживается.
Не спрашивайте меня, почему просто очистка кэша не работает для меня, я не супер-мастер Git, но именно так я решил проблему.
источник
Из документации git:
Еще одна полезная вещь, которую вы можете захотеть сделать - сохранить файл в рабочем дереве, но удалить его из промежуточной области. Другими словами, вы можете захотеть сохранить файл на жестком диске, но Git больше не будет его отслеживать. Это особенно полезно, если вы забыли добавить что-то в свой файл .gitignore и случайно сделали это, например, большой файл журнала или набор скомпилированных файлов .a. Для этого используйте параметр --cached:
Так, может быть, не включать "-r"?
источник
--cached
.-r
Вариант для «рекурсивных», которые должны быть включены в данном случае.