Сброс ветки (Reset)
Часть раздела Контроль версий путешествия по Terminal на Coddy — урок 44 из 58.
git reset перемещает указатель текущей ветки на другой коммит. Наиболее распространенное использование — отмена последних коммитов, которыми вы еще не поделились.
git reset --hard HEAD~1Это перемещает main на один коммит назад и перезаписывает рабочую директорию для соответствия. Коммит, который вы пропустили, больше не доступен из вашей ветки (Git хранит его некоторое время на случай, если вы передумаете, но ожидайте, что он исчезнет).
Существует три варианта сброса (reset):
--soft: переместить указатель ветки; сохранить проиндексированные изменения--mixed(по умолчанию): переместить указатель; убрать изменения из индекса, но сохранить рабочие файлы--hard: переместить указатель; также отбросить изменения в рабочих файлах
--hard — это наиболее разрушительная форма. Она отлично подходит для исправления локальных ошибок, но никогда не используйте её для коммитов, которые уже получили другие пользователи.
Задание
СреднеПапка содержит doc.md. Инициализируйте репозиторий и создайте три коммита по порядку:
- Добавьте
doc.mdс сообщениемAdd doc. - Добавьте
secondв конецdoc.md, сделайте коммит с сообщениемSecond draft. - Добавьте
thirdв конецdoc.md, сделайте коммит с сообщениемThird draft.
Выполните жесткий сброс (hard-reset) ветки назад к самому первому коммиту, используя HEAD~2. Выведите содержимое doc.md.
Шпаргалка
git reset перемещает указатель текущей ветки на другой коммит. Три варианта:
--soft: переместить указатель; сохранить проиндексированные изменения--mixed(по умолчанию): переместить указатель; убрать из индекса, но сохранить рабочие файлы--hard: переместить указатель; отбросить изменения в рабочих файлах
git reset --hard HEAD~1 # отменить последний коммит, отбросить изменения
git reset --hard HEAD~2 # отменить последние 2 коммитаВнимание: Никогда не используйте --hard для коммитов, которые уже были получены другими пользователями.
Попробуйте сами
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Контроль версий
2Начало работы
Инициализация репозиторияПапка .gitНастройка данных пользователяGit StatusИтоги — первый репозиторий5Игнорирование файлов
Зачем игнорировать файлыШаблоны .gitignoreПроверка правил игнорированияИтоги: чистый репозиторий8Слияние
Что такое слияниеСлияние Fast-ForwardТрёхстороннее слияниеКонфликты слиянияРазрешение конфликтаИтоги — Мастер слияния11Проект: Feature Branch
Обзор проектаИнициализация Main3Отслеживание изменений
Область подготовкиGit AddGit CommitИзменение отслеживаемого файлаGit LogИтоги: первые коммиты6Проект: Сайт рецептов
Обзор проектаИнициализация и игнорирование9Отмена изменений
Отмена непроиндексированных измененийИсключение файла из индексаИсправление последнего коммитаОтмена коммита (Revert)Сброс ветки (Reset)Итоги — Машина времени