Изменения в репозитории git выполняются в текущем рабочем каталоге, и изменения могут быть помещены в индекс, из которого пользователь git может выбрать следующую фиксацию. Иногда пользователям git необходимо отменить изменения, сделанные в репозитории для целей проекта. Для выполнения этой задачи используется команда `git reset`. Эта команда сбрасывает текущее состояние HEAD в определенное состояние, и она может работать со всеми задачами фиксации или на уровне отдельного файла. С этой командой можно использовать различные типы параметров режима сброса. Назначение каждого параметра сброса и то, как некоторые параметры сброса могут быть применены с помощью команды `git reset` для локального репозитория git, были объяснены в этой статье.
Вариант | Цель |
---|---|
-soft | Он используется для запуска команды сброса без перезаписи каких-либо незафиксированных измененных файлов. Он не сбрасывает индекс и не вносит изменений в текущее рабочее дерево. |
–mixed | Это параметр сброса по умолчанию, он сбрасывает индекс, но не вносит никаких изменений в рабочее дерево. |
-hard | Он сбрасывает и индекс, и рабочее дерево. Таким образом, любые зафиксированные или незафиксированные изменения, сделанные в рабочем дереве, будут потеряны. |
–merge | Он сбрасывает индекс и изменяет файлы в рабочем дереве, если существует какое-либо различие между индексом и рабочим деревом. Если в рабочем каталоге существует какой-либо файл, который не спрятан, сброс будет прерван. |
-keep | Он сбрасывает записи индекса и изменяет файлы рабочего дерева при любых различиях между индексом и рабочим деревом. Если разница существует в локальном файле, сброс будет отменен. |
-[no-]recurse-submodules | Он используется для рекурсивного сброса рабочего дерева всех активных подмодулей. |
GitHub Desktop помогает пользователю git графически выполнять задачи, связанные с git. Вы можете легко загрузить последнюю версию этого приложения для Ubuntu с github.com. Вы должны установить и настроить это приложение после загрузки, чтобы использовать его. Вы также можете проверить руководство по установке GitHub Desktop в Ubuntu, чтобы правильно узнать процесс установки.
Вы должны создать локальный репозиторий для тестирования команд, используемых в этой статье для проверки и разрешения конфликта слияния.
В этой части статьи показано использование команды `git reset` для конкретного файла. Выполните следующую команду, чтобы проверить текущий статус репозитория, добавить файл send-email3.php и сбросить файл send-email3.php.
$ git status $ git add send-email3.php $ git reset send-email3.php
Следующие выходные данные показывают, что команда сброса изменила отслеживаемый файл на неотслеживаемый файл без какой-либо опции. Чтобы изменить статус всех отслеживаемых файлов репозитория на неотслеживаемые файлы, вы должны использовать команду git reset HEAD.
Использование команды `git reset` с — вариантом soft показано в этой части статьи. Эта опция сохраняет рабочее дерево неизменным. Выполните следующую команду, чтобы проверить текущий статус репозитория, добавить файл send-email3.php и сбросить репозиторий с параметром –soft.
$ git status $ git add send-email3.php $ git reset --soft $ git status
Следующий вывод появится после выполнения вышеуказанных команд. Выходные данные показывают, что рабочий тройник остался неизменным после выполнения команды reset, поскольку опция –soft сбрасывает только индекс.
В этой части статьи показано использование команды `git reset` с параметром –hard. Эта опция перемещает указатель HEAD и обновляет содержимое рабочего дерева с содержимым, на которое указывает HEAD. Выполните следующую команду, чтобы проверить текущий статус репозитория, добавить файл send-email3.php и сбросить репозиторий с параметром –hard.
$ git status $ git add send-email3.php $ git reset --hard $ git status
Следующий вывод появится после выполнения вышеуказанных команд. Выходные данные показывают, что рабочий тройник очищен и нечего фиксировать после выполнения команды сброса, а добавленный файл был удален из репозитория.
В этой части руководства показано использование команды `git reset` с параметром –mixed. Этот параметр перемещает указатель HEAD и обновляет содержимое промежуточной области содержимым, на которое указывает HEAD. Но он не обновляет рабочий древовидный параметр –hard и предоставляет информацию о неотслеживаемых файлах. Создайте новый файл с именем send-email-new.php в текущей папке репозитория. Выполните следующую команду, чтобы проверить текущий статус репозитория, добавить файл send-email3.php и сбросить репозиторий с параметром –mixed.
$ git status $ git add send-email-new.php $ git reset --mixed $ git status
Следующий вывод появится после выполнения вышеуказанных команд. Выходные данные показывают, что команда сброса сохранила текущий рабочий каталог неизменным, поскольку локальный репозиторий изменился, что задача не была зафиксирована. Итак, задача сброса прервана.
В этой статье были объяснены четыре различных способа запуска команды `git reset` с использованием локального демонстрационного репозитория. Первый сброс был применен к определенному файлу. Второй сброс был применен с опцией –soft. Третий сброс применяется с опцией –hard. Четвертый сброс был применен с опцией –mixed. Мы надеемся, что читатели правильно воспользуются командой `git reset` после прочтения этого руководства.