Разница между Git Reset, Git Checkout и Git Revert ⋆ ALexHost SRL

Проверьте свои навыки на всех наших услугах хостинга и получите скидку 15%!.

Используйте код при регистрации:

Skills
17.01.2025

Разница между Git Reset, Git Checkout и Git Revert

Эффективный контроль версий жизненно важен для любого проекта разработки, а правильная инфраструктура может значительно улучшить ваш рабочий процесс. AlexHost предлагает мощные и масштабируемые VPS-хостинги, идеально подходящие для размещения ваших Git-репозиториев и обеспечения бесперебойного управления проектами. Благодаря выделенным IPv4-адресам, быстрым NVMe-хранилищам и удобной панели управления AlexHost обеспечивает идеальную среду для работы Git и других инструментов разработки, обеспечивая производительность и надежность, необходимые для бесперебойной совместной работы.

При работе с Git существует множество команд, которые позволяют отменять изменения или перемещаться между различными состояниями репозитория. Три наиболее часто используемые команды для этих целей – git reset, git checkout и git revert. Хотя они могут показаться похожими, каждая из них служит отдельной цели и работает по-разному.

Вот подробное описание различий между git reset, git checkout и git revert:


1. git reset

git reset используется для отмены коммитов или снятия изменений, перемещая указатель HEAD текущей ветки на указанный коммит. Она изменяет историю коммитов и может повлиять на ваш рабочий каталог, область хранения или оба, в зависимости от того, как она используется.

Примеры использования:

  • Отмена недавних фиксаций.
  • Перемещение указателя HEAD назад к более раннему коммиту.
  • Удаление файлов из области хранения (с сохранением изменений в рабочем каталоге).

Синтаксис команды:

git reset [–soft | –mixed | –hard]

Режимы сброса:

  • –мягкий: Перемещает указатель HEAD на указанную фиксацию, но сохраняет изменения как в области постановки, так и в рабочем каталоге.
  • –mixed (по умолчанию): Перемещает указатель HEAD на указанный коммит, сбрасывает область постановки, но сохраняет изменения в рабочем каталоге.
  • –hard: Перемещает указатель HEAD, сбрасывает область постановки и отбрасывает все изменения в рабочем каталоге.

Пример:

git reset –hard HEAD~1 # Переместить HEAD на один коммит назад и отменить все изменения

Внимание: git reset –hard является деструктивной операцией, поскольку навсегда удаляет изменения из рабочего каталога и истории фиксаций.


2. git checkout

git checkout используется для переключения между ветками или для проверки определённого коммита или файла. Он изменяет рабочий каталог в соответствии с состоянием ветки, коммита или файла, который вы проверяете, но не изменяет историю коммитов, если вы не создадите новый коммит после переключения ветки.

Примеры использования:

  • Переключение между ветвями.
  • Проверка предыдущего коммита или определённых файлов без изменения истории коммитов.
  • Создание новой ветки.

Синтаксис команды:

git checkout <имя_ветки> # Переход на другую ветку git checkout # Проверка конкретного коммита в отсоединенном состоянии HEAD git checkout — <имя_файла> # Восстановление конкретного файла в его последнее зафиксированное состояние

Пример:

git checkout feature-branch # Переключение на ‘feature-branch’ git checkout 123abc # Проверка коммита с хэшем 123abc (отсоединённое состояние HEAD) git checkout — file.txt # Восстановление файла file.txt до состояния, в котором он находился во время последнего коммита

Внимание: Если вы проверяете конкретный коммит (не ветку), вы входите в состояние отсоединённой HEAD, что означает, что изменения не будут связаны ни с одной веткой, пока вы не создадите новую ветку с этой точки.


3. git revert

git revert используется для отмены фиксации путём создания нового фиксатора, который отменяет изменения, внесённые исходным фиксатором. Он сохраняет историю фиксации, что делает его безопасным способом отмены изменений без переписывания истории.

Примеры использования:

  • Безопасная отмена фиксаций, особенно в общих или удалённых ветках.
  • Отмена конкретных фиксаций с сохранением истории фиксаций.
  • Отмена изменений в среде совместной работы.

Синтаксис команды:

git revert

Пример:

git revert HEAD # Отмена последнего коммита и создание нового коммита с обратными изменениями git revert # Отмена определенного коммита путем создания нового коммита, который отменяет его изменения

Важное замечание: git revert не удаляет историю или коммиты. Вместо этого он создает новый коммит, который отменяет изменения указанного коммита. Это делает git revert неразрушающей командой, сохраняющей полную историю изменений.

Когда использовать каждую команду

  • Используйте git reset, когда:
    • Вам нужно отменить недавнюю фиксацию (или несколько фиксаций) в локальном репозитории.
    • Вы хотите удалить файлы или откатить изменения в рабочем каталоге.
    • Вы работаете над локальной веткой и не нуждаетесь в сохранении истории коммитов.
  • Используйте git checkout, когда:
    • Вам нужно переключаться между ветками.
    • Вы хотите проверить более ранний коммит без изменения истории (в отсоединённом состоянии HEAD).
    • Вам нужно вернуть файл или папку в предыдущее состояние, не затрагивая остальные изменения.
  • Используйте git revert, когда:
    • Вам нужно отменить изменения, которые уже были размещены в общей или удалённой ветке.
    • Вы хотите отменить фиксацию, но сохранить историю.
    • Вы сотрудничаете с другими людьми и хотите сохранить ясную и точную историю фиксации.

Заключение

Каждая из этих команд Git – git reset, git checkout и git revert – имеет свое уникальное назначение и эффект. Понимание того, когда и как правильно их использовать, необходимо для эффективного управления историей проекта и его изменениями. При совместной работе часто безопаснее использовать git revert для отмены изменений, в то время как git reset может быть полезен для очистки локальной истории. git checkout, с другой стороны, является основной командой для переключения ветвей или навигации по различным коммитам без изменения истории репозитория.

Проверьте свои навыки на всех наших услугах хостинга и получите скидку 15%!.

Используйте код при регистрации:

Skills