Подтвердить что ты не робот

Есть ли разница между git reset --hard HEAD и git checkout.?

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

git reset --hard HEAD

и

git checkout .

?

4b9b3361

Ответ 1

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

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

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

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

Ответ 2

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

Ответ 3

Это является хорошим (и исчерпывающим) объяснением автора книги Pro Git.