W3docs

git rm

On this page, you can find useful information about git rm command, learn how to use and undo it and see the difference of the shell rm and git rm command.

Описание команды git rm

Команда git rm удаляет определенные файлы или группу файлов из репозитория Git. Основная функция git rm — удаление отслеживаемых файлов из индекса. Git rm также можно использовать для удаления файлов как из индекса подготовки (staging index), так и из рабочей директории. Однако файл нельзя удалить только из рабочей директории. Следует отметить, что команда git rm не удаляет ветки. Примечание: git rm работает только с отслеживаемыми файлами. Если вы попытаетесь удалить неотслеживаемый файл, команда выдаст ошибку.

git revert1

Использование команды git rm

<file>…​Указывает, какие файлы нужно удалить.
-f --forceОтменяет проверку безопасности, которая гарантирует, что файлы в HEAD соответствуют содержимому индекса подготовки и рабочей директории.
-n --dry-runВыполняет команду git rm, но фактически не удаляет файлы. Выводит только список файлов, которые были бы удалены.
-rСокращение от 'recursive' (рекурсивно). В рекурсивном режиме git rm удаляет целевую директорию и всё её содержимое.
--Четко разделяет список имен файлов и аргументы, передаваемые в git rm.
--cachedУказывает, что удаление должно происходить только в индексе подготовки. Файлы в рабочей директории остаются без изменений.
--ignore-unmatchЗавершает работу со статусом 0, даже если ни один файл не совпал. Это код статуса уровня Unix.
-q --quietСкрывает вывод команды git rm. Обычно git rm выводит одну строку для каждого удаленного файла.

Отмена действий git rm

Команда git rm обновляет индекс подготовки и рабочую директорию. Эти изменения не будут сохранены, пока не будет создан новый коммит. Их можно отменить с помощью команд Git. Чтобы отменить удаление из индекса подготовки (оставив файл удаленным в рабочей директории), используйте: git reset HEAD

git reset HEAD

Чтобы полностью восстановить файл до его последней версии как в индексе подготовки, так и в рабочей директории, используйте современную команду git restore: git restore

git restore <file>

(Примечание: git checkout . устарел для восстановления файлов.)

Чтобы удалить файл только из индекса подготовки (оставив его в рабочей директории), используйте флаг --cached: git rm --cached

git rm --cached <file>

Используйте git reflog для поиска ссылки до выполнения git rm, если git rm был запущен и создан новый коммит, сохраняющий удаление.

Git rm vs rm

Когда обычная команда оболочки rm выполняется для отслеживаемого файла, репозиторий Git распознает это и обновляет только рабочую директорию, отражая удаление. Чтобы добавить эти изменения в индекс подготовки, также необходимо выполнить команду git add. Команда git rm обновляет и индекс подготовки, и рабочую директорию, фиксируя удаление.

Примеры

Рассмотрим следующий пример:

git rm с подстановочными знаками

git rm folder/\*.txt

Мы используем шаблон с подстановочными знаками для удаления всех файлов *.txt. Эти файлы являются прямыми дочерними элементами директории folder. Мы ставим обратный слэш перед звездочкой, чтобы оболочка не расширяла подстановочный знак самостоятельно. Затем подстановочный знак расширяется до путей файлов и поддиректорий.

git rm -f

git rm -f git-*.sh

В примере используется опция принудительного удаления (force) для удаления целевых файлов из рабочей директории и индекса подготовки.

Удаление файлов, которых больше нет в файловой системе

Если вы хотите зафиксировать все удаленные файлы как часть следующего коммита, сначала добавьте удаления в индекс с помощью `git add -u`, а затем выполните `git commit`.

Но если вы хотите непрерывно удалять все файлы, которые были удалены с помощью оболочки rm, используйте приведенную ниже команду. Она создаст список всех удаленных файлов из рабочей директории и передаст его в git rm --cached для обновления индекса подготовки:

git rm --cached

git diff --name-only --diff-filter=D -z | xargs -0 git rm --cached

Practice

Практика

Каковы функции и опции команды 'git rm'?