Эти три команды имеют совершенно разные цели. Они даже отдаленно не похожи.
git revert
Эта команда создает новый коммит, который отменяет изменения предыдущего коммита. Эта команда добавляет новую историю в проект (она не изменяет существующую историю).
git checkout
Эта команда извлекает содержимое из репозитория и помещает его в ваше рабочее дерево. Это также может иметь другие эффекты, в зависимости от того, как была вызвана команда. Например, он также может изменить ветку, над которой вы сейчас работаете. Эта команда не вносит никаких изменений в историю.
git reset
Эта команда немного сложнее. Это на самом деле делает несколько разных вещей в зависимости от того, как он вызывается. Он изменяет индекс (так называемая «промежуточная зона»). Или это меняет то, на какой коммит в данный момент указывает голова ветки. Эта команда может изменить существующую историю (путем изменения коммита, на который ссылается ветвь).
Использование этих команд
Если коммит был сделан где-то в истории проекта, и вы позже решили, что коммит был неправильным и не должен был быть сделан, тогда git revert
является инструментом для работы. Он отменит изменения, внесенные плохим коммитом, записав «отмену» в истории.
Если вы изменили файл в рабочем дереве, но не зафиксировали его, вы можете использовать git checkout
для извлечения свежей копии из хранилища.
Если вы сделали коммит, но не поделились им ни с кем другим и решили, что он вам не нужен, тогда вы можете использовать git reset
, чтобы переписать историю так, чтобы она выглядела так, как будто вы никогда этого не делали совершить.
Это лишь некоторые из возможных сценариев использования. Существуют и другие команды, которые могут быть полезны в некоторых ситуациях, и у вышеперечисленных трех команд есть и другие применения.