Как вы заметили, команда checkout
перегружена, что означает две разные вещи.Я думаю, что git help checkout
достаточно ясно это объясняет:
git-checkout - Switch branches or restore working tree files
Существует несколько форм команды, о которой вы спрашиваете:
git checkout [<tree-ish>] [--] <pathspec>...
В вашем случаеАргумент <tree-ish>
опущен, аргумент --
для разделения опций и имен файлов опущен, а <pathspec>
равен .
(т. Е. Текущий каталог).Эта форма команды задокументирована как:
Перезаписать пути в рабочем дереве, заменив их содержимым индекса или <tree-ish>
(чаще всего фиксацией).
Так как вы не указали аргумент <tree-ish>
, содержимое файлов в .
заменяется содержимым из индекса.Это означает, что нужно отменить любые изменения в .
, которые еще не были добавлены в индекс.
Вы можете думать об этом как о «извлечении этих файлов из репозитория», что может означать либо принятие, либоиндекс (который может содержать изменения, которые были поставлены, но еще не зафиксированы).