Еще один важный практический вопрос при работе с Git - это операции с файлами.
В частности, это операции удаления и переименования файлов. В системе Git имеются специальные команды, которые очень похожи на консольные команды
и 1
rm
в Linux/Mac OS. Но для Git они выглядят несколько иначе: 1
mv
- для удаления файлов и 1
git rm
- для переименования файлов. Ниже я рассмотрю обе эти комадны более подробно.1
git mv
Команда git rm
Для удаления файлов в системе Git, как уже упоминалось выше, имеется специальная команда
. Ее отличие от обычной консольной команды 1
git rm
(в том же Linux) заключается в особенности самой системы Git.1
rm
Как хорошо известно, в системе Git файл может одновременно существовать в трех ипостасях: в области “Working Directory”, в области “Staging Area”, в области “Repository”. Удаление файла из области “Working Directory” не приведет к его удалению из областей “Staging Area” и “Repository”.
Поэтому, чтобы удалить файл, нужно (в идеале) выполнить три команды подряд для удаления файла из Рабочей области “Working Directory”, затем из области индекса “Staging Area” и потом из области репозитория “Repository”:
Команда
является ни чем иным, как “вшитым” в Git сокращением двух первых команд:1
git rm
Сделано это всего лишь для удобства пользования системой Git. Давайте на примере посмотрим работу команды
. Предположим, что имеется файл 1
git rm
, который проиндексирован и зафиксирован.1
index.html
Удалим его командой
:1
git rm
Видим, что файл
был сразу удален из двух областей: рабочего каталога “Working Directory” и области индексации “Staging Area”. Но в репозитории файл все же остался, о чем говорит вывод команды 1
index.html
.1
git status
Любой последующий commit зафиксирует удаление этого файла:
Команда git rm -cached
У команды
имеется пара полезных ключей, одним из которых является ключ 1
git rm
. Задача этого ключа - позволить команде 1
--cached
удалить файл из области индексирования “Staging Area”, но при этом оставить его в области рабочего проекта “Working Directory”. Давайте рассмотрим пример, когда создан файл 1
git rm
и произведена его индексация (но не фиксация):1
second.html
Удалим его командой
:1
git rm --cached
Отлично! Видим, что произошло удаление файла
. Кроме того, команда 1
second.html
показывает, что в рабочей области “Working Directory” имеется неотслеживаемый (untracked) файл по имени 1
git status
.1
second.html
Команда git rm -f
В предыдущем разделе я рассмотрел вариант, когда созданный и проиндексированный файл удаляется из области индексирования “Staging Area”, но остается в области “Working Directory”. Выполняется это с помощью команды
.1
git rm --cached
Логическим продолжением этой команды является та же самая команда
, но с ключом 1
git rm
- 1
-f
. Такая команда удаляет проиндексированный (но еще не зафиксированный) файл как из области “Staging Area”, так и из области “Working Directory”.1
git rm -f
Давайте рассмотрим на примере созданного и проиндексированного файла
его удаление с помощью команды 1
third.html
:1
git rm -f
Файл
удален как из области “Staging Area”, так и из области “Working Directory”. В итоге можно сказать, что между командой 1
third.html
и командой 1
git rm -f
практически нет никакой разницы.1
git rm
Команда git mv - перемещение или переименование файлов
В системе Git имеется “своя” команда для перемещения или переименования файлов. Слово “своя” здесь не даром взято в кавычки - аналогия с командой
полная. Команда 1
git rm
перемещает или переименовывает файлы, автоматически “уведомляя” об этих событиях область “Staging Area”:1
git mv
Остается только зафиксировать эти изменения любым коммитом:
Переименуем файл
с помощью команды 1
index.html
:1
git mv
Вот и все несложные операции по перемещению\переименованию или удалению файлов с помощью команд
и 1
git rm
, под всевидящим оком Git.1
git mv