git rm и git mv - удаление и переименование в Git

Reading time ~3 minutes

Еще один важный практический вопрос при работе с Git - это операции с файлами.

В частности, это операции удаления и переименования файлов. В системе Git имеются специальные команды, которые очень похожи на консольные команды rm и mv в Linux/Mac OS. Но для Git они выглядят несколько иначе: git rm - для удаления файлов и git mv - для переименования файлов. Ниже я рассмотрю обе эти комадны более подробно.

Команда git rm

Для удаления файлов в системе Git, как уже упоминалось выше, имеется специальная команда git rm. Ее отличие от обычной консольной команды rm (в том же Linux) заключается в особенности самой системы Git.

Как хорошо известно, в системе Git файл может одновременно существовать в трех ипостасях: в области “Working Directory”, в области “Staging Area”, в области “Repository”. Удаление файла из области “Working Directory” не приведет к его удалению из областей “Staging Area” и “Repository”.

Поэтому, чтобы удалить файл, нужно (в идеале) выполнить три команды подряд для удаления файла из Рабочей области “Working Directory”, затем из области индекса “Staging Area” и потом из области репозитория “Repository”:

$ rm index.html
$ git add .
$ git commit -m 'Delete file index.html'

Команда git rm является ни чем иным, как “вшитым” в Git сокращением двух первых команд:

$ rm index.html
$ git add .

Сделано это всего лишь для удобства пользования системой Git. Давайте на примере посмотрим работу команды git rm. Предположим, что имеется файл index.html, который проиндексирован и зафиксирован.

Удалим его командой git rm:

Команда git rm - удаление файлов в Git

Видим, что файл index.html был сразу удален из двух областей: рабочего каталога “Working Directory” и области индексации “Staging Area”. Но в репозитории файл все же остался, о чем говорит вывод команды git status.

Любой последующий commit зафиксирует удаление этого файла:

Фиксация удаления файла командой git rm

Команда git rm -cached

У команды git rm имеется пара полезных ключей, одним из которых является ключ --cached. Задача этого ключа - позволить команде git rm удалить файл из области индексирования “Staging Area”, но при этом оставить его в области рабочего проекта “Working Directory”. Давайте рассмотрим пример, когда создан файл second.html и произведена его индексация (но не фиксация):

Созданный файл second.html

Удалим его командой git rm --cached:

Команда git rm -cached

Отлично! Видим, что произошло удаление файла second.html. Кроме того, команда git status показывает, что в рабочей области “Working Directory” имеется неотслеживаемый (untracked) файл по имени second.html.

Команда git rm -f

В предыдущем разделе я рассмотрел вариант, когда созданный и проиндексированный файл удаляется из области индексирования “Staging Area”, но остается в области “Working Directory”. Выполняется это с помощью команды git rm --cached.

Логическим продолжением этой команды является та же самая команда git rm, но с ключом -f - git rm -f. Такая команда удаляет проиндексированный (но еще не зафиксированный) файл как из области “Staging Area”, так и из области “Working Directory”.

Давайте рассмотрим на примере созданного и проиндексированного файла third.html его удаление с помощью команды git rm -f:

Созданный файл third.html

Команда git rm -f

Файл third.html удален как из области “Staging Area”, так и из области “Working Directory”. В итоге можно сказать, что между командой git rm -f и командой git rm практически нет никакой разницы.

Команда git mv - перемещение или переименование файлов

В системе Git имеется “своя” команда для перемещения или переименования файлов. Слово “своя” здесь не даром взято в кавычки - аналогия с командой git rm полная. Команда git mv перемещает или переименовывает файлы, автоматически “уведомляя” об этих событиях область “Staging Area”:

Команда git mv - перемещение файла в Git

Остается только зафиксировать эти изменения любым коммитом:

$ git commit -m 'Move index.html to papka'
  [master 868d428] Move index.html to papka
   1 file changed, 0 insertions(+), 0 deletions(-)
   rename index.html => papka/index.html (100%)

Переименуем файл index.html с помощью команды git mv:

Команда git mv - переименование файла в Git

Вот и все несложные операции по перемещению\переименованию или удалению файлов с помощью команд git rm и git mv, под всевидящим оком Git.


Различие между exports и module.exports

Попытка разобраться, в чем различие между exports и module.exports, основанная на статье Understanding module.exports ...Continue reading

Комментарии

Защита от автоматических сообщений
CAPTCHA
Введите слово на картинке