Diferença entre `git branch -f <branch_name> <hash>` e `git checkout <branch_name>; git reset --hard <hash> `sob uma árvore de trabalho limpa?
Até agora, eu sempre useigit checkout <branch_name>; git reset --hard <hash>
para mover uma ramificação de volta para uma confirmação anterior.
Então me depareiessa questão, mas as respostas e comentários não explicam detalhadamente as diferenças entre eles.
Supondo que eu tenha uma árvore de trabalho limpa, que diferenças internas existem entre
git branch -f <branch_name> <hash>
e
git checkout <branch_name>
git reset --hard <hash>
e essas diferenças, se houver, têm implicações sutis no uso avançado?