файлов - удалить файлы из ветки git




Удалите файл из репозитория Git, не удаляя его из локальной файловой системы (6)

Git позволяет игнорировать эти файлы, предполагая, что они не изменились. Это делается путем запуска команды git update-index --assume-unchanged path/to/file.txt . Как только вы помечаете файл как таковой, git полностью игнорирует любые изменения в этом файле; они не будут отображаться при запуске git status или git diff, и они никогда не будут совершены.

(От https://help.github.com/articles/ignoring-files )

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

Примечание. Это не отвечает на вопрос напрямую, но основывается на последующих вопросах в комментариях к другим ответам.

Моя первоначальная фиксация содержала некоторые файлы журналов. Я добавил *log к моему .gitignore , и теперь я хочу удалить файлы журнала из своего репозитория.

git rm mylogfile.log

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

Как удалить этот файл из репо, не удалив мою локальную копию файла?


Более общее решение:

  1. Отредактируйте файл .gitignore .

    ECHO mylogfile.log >> .gitignore

  2. Удалите все элементы из индекса.

    git rm -r -f --cached .

  3. Перестроить индекс.

    git add .

  4. Сделать новую фиксацию

    git commit -m "Removed mylogfile.log"


Вы также можете удалить файлы из репозитория на основе вашего .gitignore, не удаляя их из локальной файловой системы:

git rm --cached `git ls-files -i -X .gitignore`

Или, альтернативно, на Windows Powershell:

git rm --cached $(git ls-files -i -X .gitignore)

Выше ответы не работали для меня. Я использовал фильтр-ветвь, чтобы удалить все зафиксированные файлы

удалите файл из репозитория git с помощью:

git filter-branch --tree-filter 'rm  file'

удалите папку из репозитория git с помощью:

git filter-branch --tree-filter 'rm -rf directory'

Это удаляет каталог или файл из всех коммитов

вы можете указать фиксацию, используя:

git filter-branch --tree-filter 'rm -rf directory' HEAD

Или диапазон

git filter-branch --tree-filter 'rm -rf vendor/gems' t49dse..HEAD

Чтобы вывести все на удаленный, вы можете:

git push origin master --force

Кроме того, если вы отправили конфиденциальные данные (например, файл, содержащий пароли), вы должны полностью удалить его из истории репозитория. Вот руководство, объясняющее, как это сделать: http://help.github.com/remove-sensitive-data/


Чтобы удалить всю папку из репо (например, файлы Resharper), выполните следующие действия:

git rm -r --cached folderName

Я сделал некоторые файлы resharper и не хотел, чтобы они сохранялись для других пользователей проекта.





git-rm