Удаление папки из отслеживания git
мне нужно исключить папку (имя загрузки) из отслеживания. Я пытался бежать
git rm -r --cached wordpress/wp-content/uploads
и после этого я добавил путь .gitignore
/wordpress/wp-content/uploads
но когда я побежал git status они отображаются как удаленные. Если я попытаюсь зафиксировать изменения, файлы будут удалены, а не только удалены из отслеживания.
что я делаю не так?
Я тоже пробовал
git update-index --assume-unchanged <file>
но это, кажется, отследить только файлы. Но мне нужно удалить весь папка (включая подпапки) из отслеживания.
5 ответов:
я столкнулся с этим вопросом, когда искал "git remove folder from tracking". Вопрос ОП привел меня к ответу. Я резюмирую его здесь для будущих поколений.
вопрос
Как удалить папку из моего репозитория 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
--ignore-unmatchздесь важно, без этой опции git выйдет с ошибкой на первый файл не в индексе.
чтобы забыть каталог рекурсивно добавить
/*/*путь:git update-index --assume-unchanged wordpress/wp-content/uploads/*/*используя
git rm --cachedне очень хорошо для сотрудничества. Подробнее здесь:как остановить отслеживание и игнорировать изменения в файле в Git?
из документации git:
еще одна полезная вещь, которую вы можете сделать, это сохранить файл в рабочем дереве, но удалить его из промежуточной области. Другими словами, вы можете сохранить файл на жестком диске, но больше не отслеживать его Git. Это особенно полезно, если вы забыли добавить что-то к вашему .файл gitignore и случайно поставил его, как большой файл журнала или кучу .скомпилированный файл. Чтобы сделать это, используйте параметр --кэшированные вариант:
$ git rm --cached readme.txtТак может не включать "- r"?
шаг 2.5: зафиксируйте изменения:
>git commitЕсли вы нажимаете, не делая этого сначала он ничего не делает!
Comments