Ответ 1
git reset
имеет очень важные флаги --soft
, --hard
и --mixed
(и --keep
и --merge
)
http://git-scm.com/docs/git-reset
--mixed
по умолчанию, и когда вы делаете git reset sha file
, вы делаете mixed
reset, посредством чего:
- смешанные
Сбрасывает индекс, но не рабочее дерево (т.е. измененные файлы сохраняются, но не помечены для фиксации) и сообщает, что не было обновлено. Это действие по умолчанию.
Как сказано выше, reset в этом случае вообще не касается вашего рабочего дерева, и только версия в индексе reset соответствует той, что указана в шаге.
git checkout
с другой стороны:
Когда или --patch даны, git проверка не переключается ветки. Он обновляет именованные пути в рабочем дереве из индексный файл или из имени (чаще всего это фиксация).
Итак, когда вы делаете git checkout
, вы потеряете изменения в файле, и его заменит все, что было в версии файла в sha, тогда как при смешанном reset будет отображаться только ваш индекс reset, и ваш рабочий каталог по-прежнему будет иметь изменения, которые вы можете позже выполнить по мере необходимости.