Существует несколько проблем с таким понятием:
Не все операции обратимы.Иногда это происходит из-за того, что Git не записывает достаточно информации, чтобы вывести предыдущее состояние - это было бы слишком дорого в общем.Иногда такие вещи, как git reset --hard
или git clean
, уничтожают неотслеживаемые изменения.Чтобы отменить их, необходимо постоянно выполнять автоматическое резервное копирование.Иногда это происходит потому, что понятие отмены неоднозначно - как вы сами отметили, существует множество способов отменить фиксацию.
Если операция обратима и требует некоторогоистория, должны ли отмены / повторы также быть в истории, или они должны заставить это исчезнуть?Должен ли коммит быть отменен путем сброса назад или путем возврата (создания другого коммита для его отмены)?
Без регистрации всех последних действий, которые вы делаете, как вы узнаете, какая самая последняя операциябыло?Допустим, вы добавили файл в индекс и создали ветку.Нет записей о том, что было первым.
Даже если бы все было четко определено, это было бы нелепое количество работы для выполнения.Как вы решаете, что представляет собой одно действие?Одна команда Git может сделать много вещей.Должен ли он отменить один шаг, все это?Что, если вы выполнили миллион команд, каждая из которых делает маленький шаг, и вы хотите отменить все это?И это должно быть идеально , совершенно идеально, потому что это особенность, которая будет использоваться неопытными пользователями, которые не имеют ни малейшего представления, как исправить ошибки.
Таким образом, точно так же, как Git дает вам инструменты для выполнения действий, он дает вам инструменты, чтобы увидеть, что вы сделали, и отменить вещи самостоятельно, если это необходимо.
Кроме того, в отношении «повторить», каквы определили это в своем вопросе, он повторяет команду, не выполняя первоначальную операцию снова.Когда вы переделали коммит, он был другим.Повторное выполнение предыдущей команды - это то, что оболочки командной строки были предназначены для выполнения.Git не нужно изобретать это заново.