Сброс поэтапных изменений и фиксаций
Команда git reset
позволяет вам изменить HEAD - последний коммит, на который указывает ваше рабочее дерево вашего репозитория. Он изменяет либо область подготовки, либо область подготовки и рабочее дерево. Способность Git создавать коммиты в точности так, как вы хотите, означает, что вам иногда нужно отменить изменения, внесенные вами с помощью git add. Вы можете сделать это, позвонив по номеру git reset HEAD <file to change>
. У вас есть два варианта, чтобы полностью избавиться от изменений. git checkout HEAD <file(s) or path(s)>
- это быстрый способ отменить изменения в области подготовки и рабочем дереве. Будьте осторожны с этой командой, потому что она удаляет все изменения в вашем рабочем дереве. Git не знает об этих изменениях, так как они никогда не совершались. Невозможно вернуть эти изменения после запуска этой команды. Другая команда в вашем распоряжении - git reset --hard
. Это в равной степени разрушительно для вашего рабочего дерева - любые незафиксированные изменения или поэтапные изменения теряются после его запуска. Запуск git reset -hard
HEAD делает то же самое, что и git checkout HEAD. он просто не требует файла или пути для работы. Вы можете использовать --soft
с git reset. Он сбрасывает репозиторий в указанный вами коммит и выполняет все эти изменения. На любые изменения, которые вы уже подготовили, это не влияет, равно как и изменения в вашем рабочем дереве. Наконец, вы можете использовать --mixed
для сброса рабочего дерева без внесения каких-либо изменений. Это также не выполняет этапные изменения.
Возврат коммитов
Иногда мы совершаем ошибки. Коммит, который не должен был использоваться совместно, помещается в общедоступный репозиторий, в коммите есть ошибка, которую невозможно исправить, и которую необходимо отменить, или, может быть, вам больше не нужен этот код. Вызовите git revert
. Команда git revert
делает то, что вы могли ожидать. Он отменяет один коммит, применяя обратный коммит к истории. Иногда вам нужно отменить несколько коммитов, чтобы полностью отменить изменение. Вы можете использовать -no-commit
, или вы можете использовать -n
, чтобы сказать Git выполнить возврат, но не останавливайтесь перед принятием изменения. Это позволяет объединить все возвратные коммиты в один коммит, что полезно, если вам нужно отменить функцию, охватывающую несколько коммитов. Убедитесь, что вы возвращаете коммиты в обратном порядке - сначала самый новый коммит. В противном случае вы можете запутать Git, пытаясь вернуть код, который еще не существует.