Удалить папку из git отслеживания

Мне нужно исключить из отслеживания папку (загрузку имен). Я попытался запустить

git rm -r --cached wordpress/wp-content/uploads

и после этого я добавил путь к .gitignore

/wordpress/wp-content/uploads

но при запуске git status они отображаются как удаленные. Если я попытаюсь зафиксировать изменения, файлы будут удалены, а не удалены из отслеживания.

Что я делаю неправильно?

Я также пробовал

git update-index --assume-unchanged <file>

но это, кажется, не проверяет только файлы. Но мне нужно удалить целую папку (включая подпапки) из отслеживания.

Ответ 1

Я столкнулся с этим вопросом, в то время как Googling для "git удалить папку из отслеживания". Вопрос ОП привел меня к ответу. Я обобщаю его здесь для будущих поколений.

Вопрос

Как удалить папку из моего репозитория git, не удаляя его с моего локального компьютера (т.е. среды разработки)?

Ответ

Шаг 1. Добавьте путь к папке в файл .gitignore вашего репо.

path_to_your_folder/

Шаг 2. Удалите папку из локального отслеживания git, но сохраните ее на своем диске.

git rm -r --cached path_to_your_folder/

Шаг 3. Вставьте свои изменения в репозиторий git.

Папка будет считаться "удаленной" с точки зрения git (т.е. она находится в прошлой истории, но не в последней фиксации, и люди, вытаскивающие из этого репо, получат файлы, удаленные с их деревьев), но оставайтесь в своем рабочем каталоге, потому что вы использовали --cached.

Ответ 2

Это работает для меня:

git rm -r --cached --ignore-unmatch folder_name

--ignore-unmatch здесь важна, без этой опции git выйдет с ошибкой в ​​первом файле, не содержащем индекса.

Ответ 4

В документации git:

Еще одна полезная вещь, которую вы можете захотеть - сохранить файл в рабочем дереве, но удалить его из своей промежуточной области. Другими словами, вы можете сохранить файл на своем жестком диске, но не git отслеживать его больше. Это особенно полезно, если вы забыли добавить что-то в свой файл .gitignore и случайно поставили его, например, большой файл журнала или кучу скомпилированных файлов. Для этого используйте опцию --cached:

$ git rm --cached readme.txt

Так что, возможно, не включайте "-r"?

Ответ 5

Шаг 2.5: зафиксируйте ваши изменения:

>git commit

Если вы толкаете, не делая этого сначала, это ничего не делает!

Ответ 6

Я знаю, что это старая ветка, но я просто хотел добавить немного, поскольку отмеченное решение не решило проблему для меня (хотя я пробовал много раз).

Единственный способ остановить отслеживание папки в git-форме - это сделать следующее:

  1. Сделайте резервную копию локальной папки и положите в безопасное место.
  2. Удалить папку из вашего локального репо
  3. Убедитесь, что кэш очищен git rm -r --cached your_folder/
  4. Добавьте your_folder/ в .gitignore
  5. Зафиксируйте изменения
  6. Добавьте резервную копию обратно в репозиторий

Теперь вы должны увидеть, что папка больше не отслеживается.

Не спрашивайте меня, почему просто очистка кэша не работает для меня, я не супер-мастер Git, но именно так я решил проблему.