В чем разница между файлом git reset и файлом git checkout? - PullRequest
11 голосов
/ 03 августа 2011

Почему Git позволяет мне сбросить файл? Мне показалось, что я поняла reset, в том смысле, что она двигала ГОЛОВУ ... ясно, что я была не права.

Итак, git reset sha file, похоже, делает то же самое, что и git checkout sha file, за исключением того, что я вижу file в индексе и в рабочем каталоге.

Это не имеет смысла для меня. Может кто-нибудь объяснить, пожалуйста, разницу?

Ответы [ 2 ]

8 голосов
/ 03 августа 2011

git reset имеет очень важные флаги --soft, --hard и --mixed--keep и --merge)

http://git -scm.com / документы / ГИТ-сброс

--mixed является значением по умолчанию, и когда вы делаете git reset sha file, вы делаете mixed сброс, в результате чего:

- смешанный

Сбрасывает индекс, но не рабочее дерево (т.е. измененные файлы сохраняются, но не помечаются для фиксации) и сообщает, что не было обновлено. Это действие по умолчанию.

Как сказано выше, сброс в этом случае не затронет ваше рабочее дерево, и только версия в индексе сбрасывается на версию в ша.

git checkout с другой стороны:

Когда заданы или --patch, git checkout не переключается ветви. Обновляет именованные пути в рабочем дереве из индексный файл или из именованного (чаще всего коммит).

Поэтому, когда вы сделаете git checkout, вы потеряете изменения в файле, и он будет заменен тем, что было в версии файла в sha, тогда как при смешанном сбросе будет сброшен только ваш индекс в вашем рабочем каталоге все еще будут изменения, которые вы можете позже выполнить заново при необходимости.

5 голосов
/ 03 августа 2011
git checkout

Отменяет изменения в файле.

git reset

Удаляет файл из области подготовки, но сохраняет изменения.

...