Позвольте мне объяснить некоторые варианты использования проверки с файлом, папкой и ветвями, чтобы это могло быть полезно для понимания.
Допустим, у нас есть папка с именем, devа index.htmlтакже все отслеживается, и рабочий каталог чист.
Если я случайно изменю имя файла index.htmlи хочу отменить это действие, я просто воспользуюсь git checkout index.htmlэтим, он восстановит это состояние файла из текущей выбранной ветки репозитория.
Теперь, если я внес изменения в devпапку и хочу ее восстановить. Я могу использовать, git checkout devно что, если уже есть указанная ветка, devвместо того, чтобы проверять эту папку, она откроет эту ветку. Чтобы избежать этого, я бы предпочел git checkout -- dev.
Теперь здесь пустое двойное тире обозначает текущую ветку и запрашивает у git папку devиз текущей выбранной ветки.
Точно так же, если я это сделаю, git checkout alpha devон вытащит папку dev из альфа-ветки.
Это ответ на ваш первый вопрос: «git checkout действительно означает».