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

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

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

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

/wordpress/wp-content/uploads

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

что я делаю не так?

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

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

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

5 ответов


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

вопрос

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

ответ

Шаг 1. Добавьте путь к папке в корневой каталог РЕПО .gitignore файл.

path_to_your_folder/

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

git rm -r --cached path_to_your_folder/

Шаг 3. Толкать свои изменения в Git РЕПО.

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


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

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

, без этой опции git выйдет с ошибкой в первом файле не в индексе.


чтобы забыть каталог рекурсивно добавить /*/* путь:

git update-index --assume-unchanged wordpress/wp-content/uploads/*/*

используя git rm --cached не подходит для сотрудничества. Подробнее здесь:как остановить отслеживание и игнорировать изменения в файле в Git?


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

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

$ git rm --cached readme.txt

Так, может быть, не включать "- r"?


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

>git commit

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