Git удалить файл из индекса
Обновлено: 21.11.2024
В этой статье мы рассмотрим два простых способа удаления файлов из промежуточного индекса в Git. В Git есть много разных команд, которые можно использовать для достижения одной и той же цели. Ниже вы узнаете о двух командах, которые можно использовать для удаления файлов и модификаций из промежуточного индекса, а также об их различиях.
Независимо от того, какую работу вы выполняете, сброс, удаление или иное стирание файлов опасно. Всегда есть вероятность потерять работу.
Использование метода git rm --cached
Эта команда не удалит файлы из рабочего каталога, а только удалит изменения и новые файлы из промежуточного индекса.
Команду git rm легко спутать с командой rm, доступной в большинстве UNIX-подобных операционных систем, включая операционные системы GNU/Linux и Mac OS.
Но команда rm (или /bin/rm ) и команда git rm работают совершенно по-разному. В то время как rm следует использовать при удалении файлов из вашего рабочего каталога, эффективно удаляя файл из существования, git rm удалит файлы или модификации файлов из промежуточного индекса Git.
(Напоминание: прежде чем файлы и изменения файлов будут зафиксированы в вашем репозитории Git, они остановятся в промежуточном индексе. Файлы и любые изменения файлов, отслеживаемые вашим репозиторием Git, должны быть «подготовлены» до их фиксации. В фиксацию попадает только то, что подготовлено.)
Таким образом, две команды используются по отдельности следующим образом:
- rm > удалить файлы из рабочего каталога
- git rm > удалить содержимое только из промежуточного индекса Git
Чтобы удалить файл из промежуточного индекса, выполните следующую команду:
В рабочий каталог не вносятся изменения.
Использование метода git reset HEAD
Команда git reset невероятно эффективна и может полностью стереть вашу работу. Поэтому будьте осторожны и используйте эту команду с большой осторожностью.
Команда git reset используется для сброса вашего проекта или его аспектов до определенного состояния.
Согласно документации Git, вы можете рассматривать git reset как противоположность git add . Это может быть полезным сравнением. С помощью git add вы добавляете изменения в свой список промежуточных изменений (индекс промежуточных изменений), которые в конечном итоге будут округлены и сохранены в коммите (с помощью git commit ). Команда git reset делает обратное: она, по сути, перематывает ваш проект назад и восстанавливает прежнее состояние.
Как вы понимаете, этот процесс может быть как очень полезным, так и разрушительным.
Но в данном случае мы будем безопасно использовать эту команду для удаления элементов из промежуточного индекса, который может включать:
- В отслеживаемые файлы внесены изменения.
- Новые файлы добавляются в промежуточный индекс без изменений
Вот как используется команда. (Чтобы увидеть разницу, запустите git status до и после выполнения следующей команды.)
Если вы запустите git status после этой команды, вы заметите, что изменения и новые файлы, добавленные в промежуточный индекс, были удалены, но в рабочий каталог не внесены изменения.
Общая информация о промежуточном индексе
Промежуточный индекс — это одно из трех важных понятий архитектуры Git и принципов ее работы.
В каждом проекте у вас будут рабочие файлы. После того как вы запустили репозиторий Git с помощью git init , у вас есть рабочие файлы, промежуточный индекс (по сути, список изменений, которые будут зафиксированы в репозитории) и сам репозиторий.
Итак, это указано ниже:
- Рабочий каталог: фактические рабочие файлы и каталоги, связанные с вашим проектом.
- Промежуточный индекс: список изменений, которые будут зафиксированы.
- Репозиторий: вся история проекта
Файлы в вашем проекте имеют четыре разных статуса:
- Неотслеживаемый (существует в рабочем каталоге, но не «подготовлен» для коммитов)
- Немодифицированный (Git знает о файле, но не было внесено никаких изменений, поэтому коммитить нечего)
- Изменено (изменения были внесены в файл, но не подготовлены для фиксации)
- Подготовлено (изменения успешно подготовлены и появятся при следующей фиксации)
Молодец! Теперь вы знаете, как удалить файлы из промежуточного индекса Git. Обязательно оставьте комментарий ниже или задайте вопрос, если вы застряли.
Кристофер Майорана присоединился к команде сообщества InMotion в 2015 году и регулярно делится советами и рекомендациями в Центре поддержки, в разделе вопросов и ответов сообщества и в блоге InMotion Hosting.
Комментарии
Похоже, у этой статьи пока нет комментариев — вы можете быть первым. Если у вас есть комментарии или вопросы, начните обсуждение!
Была ли эта статья полезной? Дайте нам знать! Отменить ответ
- Git
- Начало работы
- Руководство для начинающих
- Основы Git
- Настройка удаленного репозитория
- Клонировать
- Установите Git
- Ветви
- Использование ветвей
- Изменить название ветки
- Удалить ветку
- Переключатель Git
- Переключиться на главный
- Добавить и зафиксировать
- Добавление файлов
- Зафиксировать изменения
- Отменить фиксацию
- Отправить
- Отправить ветку
- Постановка
- Удалить файлы
- Тайник
- Git тайник
- Применить Git stash
- Объединить
- Объединить конфликты
- Перебазировать
- Теги
- Теги
- GitHub
- Зачем использовать GitHub?
- Создать новую учетную запись
- Используя свой аккаунт GitHub
- Создать репозиторий
- Подключение локального проекта
- Отправлять файлы с помощью действий GitHub
- Как
- Подписать теги и зафиксировать
- Создайте сервер Git
- Git для Bash
- Страницы GitHub
- Gitweb на NGINX
- Публикация файлов
- Разное
- Рекомендуемые настройки
- Похоже, это не репозиторий Git
- Крючки
- Изменить сообщение фиксации в Git
- Команда Git Checkout: как переключаться на ветки и коммиты
- Как просматривать проекты в GitWeb
- Как создавать и просматривать заметки Git
- Ускорьте свой рабочий процесс с помощью псевдонимов Git
- Общие сведения об объектах Git
- Использование «Gitignore», чтобы сделать файлы невидимыми для Git
- Использование Git Clean для удаления ненужных файлов
Нужна помощь? Задайте вопрос, поделитесь полезным советом или помогите другим на нашем форуме сообщества.
Установка и настройка
Получение и создание проектов
Базовый снимок
Ветвление и слияние
Обмен проектами и их обновление
Осмотр и сравнение
Исправление
Отладка
Электронная почта
Внешние системы
Администратор сервера
Руководства
Администрирование
Связные команды
Проверьте свою версию git, запустив
git-rm - Удалить файлы из рабочего дерева и из индекса
ОБЗОР
ОПИСАНИЕ
Удалить файлы из индекса или из рабочего дерева и индекса. git rm не удалит файл только из вашего рабочего каталога. (Нет возможности удалить файл только из рабочего дерева и при этом сохранить его в индексе; используйте /bin/rm, если вы хотите это сделать.) Удаляемые файлы должны быть идентичны вершине ветви, и никакие обновления их содержимого не могут быть размещены в индексе, хотя это поведение по умолчанию можно переопределить с помощью параметра -f. Если задан параметр --cached, промежуточное содержимое должно совпадать либо с верхушкой ветки, либо с файлом на диске, что позволяет удалить файл только из индекса.
ВАРИАНТЫ
Файлы для удаления. Fileglobs (например, *.c ) могут быть заданы для удаления всех соответствующих файлов. Если вы хотите, чтобы Git расширял символы файлового шаблона, вам может потребоваться экранировать их из оболочки. Начальное имя каталога (например, dir для удаления dir/file1 и dir/file2 ) может быть задано для удаления всех файлов в каталоге и рекурсивно всех подкаталогов, но для этого требуется явный указанный параметр -r.
Переопределить проверку актуальности.
На самом деле не удаляйте файлы. Вместо этого просто покажите, существуют ли они в индексе и в противном случае были бы удалены командой.
Разрешить рекурсивное удаление, если задано начальное имя каталога.
Этот параметр можно использовать для отделения параметров командной строки от списка файлов (полезно, когда имена файлов могут быть ошибочно приняты за параметры командной строки).
Используйте этот параметр, чтобы отменить постановку и удалить пути только из индекса. Файлы рабочего дерева, независимо от того, изменены они или нет, останутся нетронутыми.
Выйти с нулевым статусом, даже если не найдено ни одного файла.
git rm обычно выводит одну строку (в виде команды rm) для каждого удаленного файла. Этот параметр подавляет этот вывод.
ОБСУЖДЕНИЕ
Список, передаваемый команде, может содержать точные пути, шаблоны файловых шаблонов или начальные имена каталогов. Команда удаляет только те пути, которые известны Git. Указание имени файла, о котором вы не сообщили Git, не удаляет этот файл.
Подстановка файлов соответствует границам каталогов. Таким образом, при наличии двух каталогов d и d2 существует разница между использованием git rm 'd*' и git rm 'd/*' , так как первый также удалит весь каталог d2 .
УДАЛЕНИЕ ФАЙЛОВ, ИСЧЕЗНУВШИХ ИЗ ФАЙЛОВОЙ СИСТЕМЫ
У git rm нет возможности удалить из индекса только те пути, которые исчезли из файловой системы. Однако, в зависимости от варианта использования, есть несколько способов сделать это.
Использование «git commit -a»
Если вы предполагаете, что ваша следующая фиксация должна записывать все изменения отслеживаемых файлов в рабочем дереве и записывать все удаления файлов, которые были удалены из рабочего дерева с помощью rm (в отличие от git rm ), используйте git commit -a , так как он автоматически заметит и запишет все удаления. Вы также можете получить аналогичный эффект без фиксации, используя git add -u .
Использование «git add -A»
Принимая новый код для ветки поставщика, вы, вероятно, захотите записать как удаление путей, так и добавление новых путей, а также изменения существующих путей.
Обычно сначала необходимо удалить все отслеживаемые файлы из рабочего дерева с помощью этой команды:
а затем распакуйте новый код в рабочем дереве. В качестве альтернативы вы можете rsync внести изменения в рабочее дерево.
После этого проще всего записать все удаления, добавления и изменения в рабочем дереве:
Другие способы
Если все, что вы действительно хотите сделать, это удалить из индекса файлы, которых больше нет в рабочем дереве (возможно, из-за того, что ваше рабочее дерево грязное и вы не можете использовать git commit -a ), используйте следующую команду :
ПОДМОДУЛИ
Только подмодули, использующие git-файл (что означает, что они были клонированы с помощью Git версии 1.7.8 или новее), будут удалены из рабочего дерева, поскольку их репозиторий находится внутри каталога .git суперпроекта. Если подмодуль (или один из вложенных в него) по-прежнему использует каталог .git, git rm переместит каталог git подмодулей в каталог git суперпроектов, чтобы защитить историю подмодуля. Если он существует, то подмодуль. раздел в файле gitmodules[5] также будет удален, а этот файл будет помещен в промежуточное состояние (если только не используются --cached или -n).
Подмодуль считается обновленным, если HEAD совпадает с записанным в индексе, никакие отслеживаемые файлы не изменяются и в рабочем дереве подмодулей нет неотслеживаемых файлов, которые не игнорируются. Игнорируемые файлы считаются расходными и не останавливают удаление рабочего дерева подмодуля.
Если вы хотите удалить только локальное извлечение подмодуля из вашего рабочего дерева без фиксации удаления, используйте вместо этого git-submodule[1] deinit. Также см. gitsubmodules[7] для получения подробной информации об удалении подмодуля.
ПРИМЕРЫ
Удаляет из индекса все файлы *.txt, находящиеся в каталоге Documentation и любых его подкаталогах.
Обратите внимание, что в этом примере звездочка * взята из оболочки; это позволяет Git, а не оболочке, расширять пути к файлам и подкаталогам в каталоге Documentation/.
EDIT Этот вопрос можно понять двояко, и оптимальный ответ в этих двух случаях различен.
Вопрос 1. Я добавил ранее неотслеживаемый файл в промежуточную область. Как удалить этот файл из промежуточной области, не удаляя его из файловой системы?
Ответ 1. Используйте следующую команду, как описано в ответе Джона Феминеллы:
Вопрос 2. Я изменил уже отслеживаемый файл и добавил свои изменения в область подготовки. Как я могу удалить свои модификации из промежуточной области? То есть, как я могу отменить свои изменения в файле?
Ответ 2. Используйте следующую команду, как описано в ответе Дэвида Андерхилла:
@hcs42 принятый ответ неверен и приведет к удалению файлов для многих людей. Второй по популярности ответ ( git reset ) правильный. Не могли бы вы переместить зеленую галочку на правильный ответ?
@MartinJambon Спасибо, что обратили внимание на проблему, с которой столкнулись некоторые люди. Проблема была в том, что мой вопрос можно было понять двояко. Принятый ответ идеально подходит для вопроса, который у меня был, но у некоторых людей возникли проблемы, которые хотели получить ответ на другой вопрос. Я отредактировал вопрос, включив в него оба вопроса.
6 ответов 6
Если вы опустите параметр --cached, он также удалит его из рабочего дерева. git rm немного безопаснее, чем git reset , потому что вы будете предупреждены, если подготовленное содержимое не соответствует ни вершине ветки, ни файлу на диске. (Если это не так, вам нужно добавить --force .)
Это также отлично работает, если, например. вы случайно проверили некоторые промежуточные сборки или локальные файлы конфигурации, которые не попали в ваш .gitignore; используйте git rm --cached, чтобы удалить их из репозитория, добавьте соответствующие файлы или каталоги в .gitignore, подготовьте и зафиксируйте, как обычно. Они исчезнут из репозитория, но останутся нетронутыми в вашем локальном дереве, и вы не сможете случайно вернуть их снова.
Этот ответ, скорее всего, неверен, поскольку он удаляет файл из репозитория (как уже упоминалось @powder366), что не является ожидаемым результатом.
Это решение мне не помогло. Он помечает указанный файл как удаленный, а затем удаляет его из локального репозитория.
Это должно удалить для вас a (без удаления или иного изменения файла):
Это удаляет последнее изменение для определенного файла, но сохраняет его в репозитории (удаленном) после фиксации и отправки.
' противоположен 'git add
<р>'. Для тех, кто привык к git-add и просто хочет отменить git-add, это полезно знать.для удаления определенного файла из индекса.
для удаления всех проиндексированных файлов.
Используйте git rm --cached [file] только для удаления файла из индекса.
git reset можно использовать для удаления добавленных файлов из индекса, если файлы никогда не фиксируются.
ПРИМЕЧАНИЕ: git reset First.txt не влияет на индекс после фиксации.
Что подводит меня к теме git restore --staged . Его можно использовать для (предположительно, после первой фиксации) удаления добавленных файлов из индекса, если файлы никогда не фиксируются.
tl;dr Посмотрите на последние 15 строк. Если вы не хотите путаться с первой фиксацией, второй фиксацией, до фиксации, после фиксации. всегда используйте git rm --cached [файл]
В зависимости от вашего рабочего процесса, это может быть такая вещь, которая вам нужна достаточно редко, поэтому нет большого смысла пытаться найти решение с помощью командной строки (если только вы по какой-то причине не работаете без графического интерфейса).
Просто используйте один из инструментов с графическим интерфейсом, который поддерживает управление индексами, например:
- git gui gitk
- бут-кола
Как насчет другой точки зрения: если вы запутались при использовании одной из предложенных, довольно загадочных команд:
<р>. у вас есть реальный шанс потерять данные или, по крайней мере, затруднить их поиск. Если вам действительно не нужно делать это очень часто, использование инструмента с графическим интерфейсом, вероятно, будет безопаснее.Работа без индекса
Судя по комментариям и голосам, я пришел к выводу, что многие люди постоянно пользуются индексом. Я не. Вот как:
- Зафиксировать всю мою рабочую копию (типичный случай): git commit -a
- Зафиксируйте всего несколько файлов: git commit (список файлов)
- Зафиксировать все измененные файлы, кроме нескольких: git commit -a, затем изменить через git gui
- Просмотрите графически все изменения в рабочей копии: git difftool --dir-diff --tool=meld
@Martin: Думаю, это зависит от вашего рабочего процесса. В моем подходе я никогда не использую индекс напрямую. Когда я хочу сохранить свою работу, я просто делаю полные коммиты с помощью git commit -a . Когда я отвечал на этот вопрос, это было потому, что я сделал (экзотический) «обратный выбор вишни», который помещает файлы в индекс для вас, но я хотел отредактировать файл перед фиксацией. Я удалил файл из индекса, пока редактировал его, чтобы дифы работали так, как я привык.
Мой вариант использования был очень узким и действительно бесполезным: создать ветку; добавить папку с файлами только для филиала; переключиться на мастера; сливаться; ops, добавил не ту папку в мастер, добавьте ее в gitignore; файлы не будут удалены из фиксации - конечно, лучшим решением было бы просто сразу использовать rm, но сначала я подумал, что переключение веток не убьет папку ignored. но. Я использую инструмент github «на основе графического интерфейса», который мне достаточно хорош, и поддерживаю некоторое управление индексами, за исключением того, что он не поддерживает это. так что, я должен использовать 2 графических интерфейса для узкого использования? все еще не могу согласиться с ответом.
Это явно непопулярный ответ. Однако я совершенно уверен, что подход, который я предлагаю, является правильным для некоторых людей (включая меня). Я использую один из этих инструментов для управления индексом несколько раз в год.
В настоящее время редакторы программирования и интегрированные среды разработки, скорее всего, поддерживают работу с графическими индексами. По крайней мере, Atom на GitHub.
В любой день я предпочитаю cli-интерфейс графическому интерфейсу, хотя это и опаснее. Это позволит мне использовать git даже без графического интерфейса, что мне удобно (вместо того, чтобы теряться, например, когда я не могу установить такие инструменты на удаленном сервере). Все, что сказано в этом ответе, совершенно верно и не заслуживает отрицательных голосов «кли-элитарист», +1 за предоставление хорошей альтернативы графическому интерфейсу!
По моему скромному мнению и моему опыту работы с git, промежуточная область — это не то же самое, что index. Я могу ошибаться, конечно, но, как я уже сказал, мой опыт использования git и моя логика говорят мне, что индекс — это структура, которая следует за вашими изменениями в вашей рабочей области (локальный репозиторий), которые не исключаются при игнорировании настроек и промежуточной области. заключается в том, чтобы сохранить файлы, которые уже подтверждены как зафиксированные, то есть файлы в индексе, для которых была запущена команда добавления. Вы не замечаете и не осознаете эту «небольшую» разницу, потому что используете git commit -a -m «comment», добавляя проиндексированные и кэшированные файлы в область сцены и фиксируя их одной командой, или слишком часто используете для этого IDE, такие как IDEA. А кеш — это то, что хранит изменения в проиндексированных файлах. Если вы хотите удалить из индекса файл, который ранее не был добавлен в промежуточную область, варианты, предложенные ранее, вам подойдут, но. Если вы уже сделали это, вам нужно будет использовать
И, пожалуйста, не спрашивайте меня, где я был 10 лет назад. Я скучал по тебе, этот ответ для будущих поколений)
Распространенный вопрос при начале работы с Git: "Как мне запретить Git больше отслеживать файл (или файлы)?" Команда git rm используется для удаления файлов из репозитория Git. Его можно рассматривать как обратную команду git add.
Обзор Git rm
Команду git rm можно использовать для удаления отдельных файлов или набора файлов. Основная функция git rm — удалить отслеживаемые файлы из индекса Git. Кроме того, git rm можно использовать для удаления файлов как из промежуточного индекса, так и из рабочего каталога. Нет возможности удалить файл только из рабочего каталога. Файлы, с которыми выполняются операции, должны быть идентичны файлам в текущем HEAD. Если есть несоответствие между HEAD-версией файла и промежуточным индексом или версией рабочего дерева, Git заблокирует удаление. Эта блокировка представляет собой защитный механизм, предотвращающий удаление незавершенных изменений.
Обратите внимание, что git rm не удаляет ветки. Узнайте больше об использовании веток git
Использование
Указывает целевые файлы для удаления. Значение параметра может быть отдельным файлом, списком файлов с разделителями-пробелами file1 file2 file3 или подстановочным символом файла (~./directory/*) .
Параметр -f используется для переопределения проверки безопасности, которую выполняет Git, чтобы убедиться, что файлы в HEAD соответствуют текущему содержимому промежуточного индекса и рабочего каталога.
Опция «пробный запуск» — это защитная функция, которая запускает команду git rm, но не удаляет файлы. Вместо этого он выведет, какие файлы он бы удалил.
Опция -r является сокращением от "рекурсивный". При работе в рекурсивном режиме git rm удалит целевой каталог и все содержимое этого каталога.
Опция разделителя используется для явного различия между списком имен файлов и аргументами, передаваемыми в git rm . Это полезно, если синтаксис некоторых имен файлов может быть ошибочно принят за другие параметры.
Параметр cached указывает, что удаление должно происходить только в промежуточном индексе. Файлы рабочего каталога останутся в покое.
Это приводит к тому, что команда завершается со статусом 0 sigterm, даже если нет подходящих файлов. Это код состояния уровня Unix. Код 0 указывает на успешный вызов команды. Параметр --ignore-unmatch может быть полезен при использовании git rm как части более крупного сценария оболочки, который должен корректно завершаться с ошибкой.
Тихая опция скрывает вывод команды git rm. Обычно команда выводит одну строку для каждого удаленного файла.
Как отменить git rm
Выполнение git rm не является постоянным обновлением. Команда обновит промежуточный индекс и рабочий каталог. Эти изменения не сохранятся до тех пор, пока не будет создана новая фиксация и изменения не будут добавлены в историю коммитов. Это означает, что внесенные здесь изменения можно «отменить» с помощью обычных команд Git.
Сброс вернет текущий промежуточный индекс и рабочий каталог обратно к фиксации HEAD. Это отменит git rm .
Извлечение будет иметь тот же эффект и восстановит последнюю версию файла из HEAD .
В случае, если git rm был выполнен и был создан новый коммит, который сохраняет удаление, git reflog можно использовать для поиска ссылки, которая была до выполнения git rm. Узнайте больше об использовании git reflog.
Обсуждение
Аргумент file>, передаваемый команде, может быть точным путем, подстановочным шаблоном файла или точным именем каталога. Команда удаляет только те пути, которые в настоящее время зафиксированы в репозитории Git.
Подстановка файлов с подстановочными знаками совпадает в каталогах. Важно соблюдать осторожность при использовании подстановочных знаков. Рассмотрим примеры: directory/* и directory*. В первом примере будут удалены все подфайлы каталога/, тогда как во втором примере будут удалены все одноуровневые каталоги, такие как каталог1 каталог2 каталог_независимо от того, что может быть неожиданным результатом.
Объем git rm
Команда git rm работает только с текущей ветвью. Событие удаления применяется только к рабочему каталогу и промежуточным деревьям индексов. Удаление файла не сохраняется в истории репозитория, пока не будет создана новая фиксация.
Зачем использовать git rm вместо rm
Репозиторий Git распознает выполнение обычной команды оболочки rm для файла, который он отслеживает. Он обновит рабочий каталог, чтобы отразить удаление. Он не будет обновлять промежуточный индекс при удалении. Для удаленных путей к файлам необходимо будет выполнить дополнительную команду git add, чтобы добавить изменения в промежуточный индекс. Команда git rm действует как ярлык, поскольку она обновляет рабочий каталог и промежуточный индекс при удалении.
Примеры
В этом примере шаблон файла с подстановочными знаками используется для удаления всех файлов *.txt, являющихся дочерними элементами каталога Documentation и любых его подкаталогов.
Обратите внимание, что в этом примере звездочка * экранируется косой чертой; это защита, которая не позволяет оболочке расширять подстановочный знак. Затем подстановочный знак расширяет пути к файлам и подкаталогам в каталоге Documentation/.
В этом примере используется параметр force и используются все файлы с подстановочными знаками git-*.sh. Параметр force явно удаляет целевые файлы как из рабочего каталога, так и из промежуточного индекса.
Как удалить файлы, которых больше нет в файловой системе
Как указано выше в разделе «Зачем использовать git rm вместо rm», git rm на самом деле является удобной командой, которая объединяет стандартную оболочку rm и git add для удаления файла из рабочего каталога и продвижения этого удаления в промежуточный индекс. Репозиторий может оказаться в громоздком состоянии, если несколько файлов были удалены с помощью только стандартной команды оболочки rm.
Если предполагается записать все явно удаленные файлы как часть следующей фиксации, git commit -a добавит все события удаления в промежуточный индекс при подготовке следующей фиксации.
Однако, если вы намерены навсегда удалить файлы, которые были удалены с помощью оболочки rm , используйте следующую команду:
Эта команда создаст список удаленных файлов из рабочего каталога и передаст этот список в git rm --cached, который обновит промежуточный индекс.
Сводка Git rm
git rm — это команда, которая работает с двумя основными деревьями управления внутренним состоянием Git: рабочим каталогом и промежуточным индексом. git rm используется для удаления файла из репозитория Git. Это удобный метод, который сочетает в себе эффект команды оболочки rm по умолчанию с git add . Это означает, что он сначала удалит цель из файловой системы, а затем добавит это событие удаления в промежуточный индекс. Это одна из многих команд, которые можно использовать для отмены изменений в Git.
Читайте также: