Тур по Git
Основы Git / Урок 1.11

git rm и git mv --- Управление файлами

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

Удаление файлов с помощью git rm

Команда git rm удаляет файл одновременно из рабочей директории и области индексации за один шаг:

git rm old-notes.txt

После этого git status покажет удаление как проиндексированное и готовое к коммиту.

git rm vs простое удаление

Если вы удалите файл с помощью rm (или файлового менеджера), Git заметит его отсутствие, но не проиндексирует удаление:

rm old-notes.txt        # файл удалён, но Git видит это как непроиндексированное изменение
git add old-notes.txt   # теперь вам нужно вручную проиндексировать удаление

Использование git rm объединяет оба шага. Оно удаляет файл и индексирует удаление.

Снятие с отслеживания без удаления

Иногда вы хотите, чтобы Git перестал отслеживать файл, но оставил его на диске --- например, конфигурационный файл, который вы случайно закоммитили:

git rm --cached secrets.env

Файл остаётся в вашей рабочей директории, но Git индексирует его удаление из репозитория. После коммита файл станет неотслеживаемым. Добавьте запись в .gitignore, чтобы предотвратить его повторное добавление.

Перемещение и переименование с помощью git mv

Команда git mv переименовывает или перемещает файл и индексирует изменение:

git mv old-name.txt new-name.txt
git mv utils.js lib/utils.js

Под капотом git mv эквивалентна:

mv old-name.txt new-name.txt
git rm old-name.txt
git add new-name.txt

Git автоматически обнаруживает переименование --- вы увидите пометку "renamed" в git status.

Попробуйте!

  1. Создайте два файла и зафиксируйте их:
    • echo "alpha" > alpha.txt && echo "beta" > beta.txt
    • git add alpha.txt beta.txt && git commit -m "Add alpha and beta"
  2. Удалите один с помощью git rm:
    • git rm alpha.txt
    • Выполните git status --- удаление уже проиндексировано
  3. Переименуйте другой с помощью git mv:
    • git mv beta.txt gamma.txt
    • Выполните git status --- отображается "renamed: beta.txt -> gamma.txt"
  4. Зафиксируйте результат: git commit -m "Remove alpha, rename beta to gamma"

Частая ошибка

Забыли --cached при снятии с отслеживания --- Запуск git rm secrets.env без --cached удалит файл с диска. Если вы хотите только снять с отслеживания, всегда используйте --cached.

🎯

Цель

Используйте git rm для удаления файла и git mv для переименования другого

Terminal
$

No commits yet. Run `git init` and create your first commit.