Por que não há desfazer / refazer no Git?
Até onde eu sei, quando você quer desfazer algo no Git, precisa encontrar explicitamente o comando para desfazer o que você fez e emiti-lo. Por exemplo, uma maneira entre muitas de desfazer uma confirmação e refazer é seguir o exemplo deaqu,
$ git commit ...
$ git reset --soft HEAD^
$ edit
$ git add ....
$ git commit -c ORIG_HEAD
Para desfazer uma solicitação, siga as instruções deaqu,
$ git reset --hard
Mas esses comandos não funcionam necessariamente de forma intercambiável. Existe uma razão pela qual o Git não permite comandos simples de desfazer e refazer? Algo a ver com a filosofia por trás disso? Além disso, não tenho muita experiência com outros sistemas de controle de versão, mas algum deles oferece um comando simples de desfazer e refazer?