git checkout -- .
, очевидно, будет работать только с текущим каталогом (и его подкаталогами), git reset --hard
будет работать с полным рабочим деревом.
git checkout -- .
будет обновлять только рабочее дерево и оставлять уже подготовленные файлы как есть, тогда как git reset --hard
будет сопоставлять индекс и рабочее дерево с фиксацией HEAD.
при использовании с refspec:
reset
установит текущий заголовок ветви для данного коммита (и сопоставит индекс и рабочее дерево)
checkout
переключится на эту ветвь, оставив локальные изменения без изменений, когда они коснутся файлов, которые не изменились между текущей ветвью и ветвью, которую нужно извлечь