Есть ли разница между git reset --hard HEAD и git checkout.? - PullRequest
20 голосов
/ 26 февраля 2011

Если я внесу изменения в рабочее дерево и еще не зафиксировал, и я хотел бы отменить внесенные изменения, есть ли разница между

git reset --hard HEAD

и

git checkout .

Ответы [ 2 ]

29 голосов
/ 26 февраля 2011

git checkout -- ., очевидно, будет работать только с текущим каталогом (и его подкаталогами), git reset --hard будет работать с полным рабочим деревом.

git checkout -- . будет обновлять только рабочее дерево и оставлять уже подготовленные файлы как есть, тогда как git reset --hard будет сопоставлять индекс и рабочее дерево с фиксацией HEAD.

при использовании с refspec:

  1. reset установит текущий заголовок ветви для данного коммита (и сопоставит индекс и рабочее дерево)
  2. checkout переключится на эту ветвь, оставив локальные изменения без изменений, когда они коснутся файлов, которые не изменились между текущей ветвью и ветвью, которую нужно извлечь
5 голосов
/ 17 апреля 2013

Эти ответы хорошие.Я хотел бы добавить, что если вы удалили файлы, которые находятся в стадии подготовки, но еще не зафиксированы, то один только git checkout . не вернет удаленные файлы обратно в рабочую область.A git reset --hard будет.

...