2013-03-19 5 views
1

Я пытаюсь определить различия, существующие среди следующих 4 команд.git checkout vs git checkout HEAD vs git checkout <CURRENT BRANCH> vs git checkout - <WORKING DIR>

Предположим, что текущая ветка равна master, а текущий каталог - это «рабочий каталог», то есть тот, где находится .git.

git checkout 

git checkout HEAD 

git checkout master 

git checkout -- . 

Насколько я могу сказать, что первые две команды полностью эквивалентны, и, по существу, не оп (за то, что они оба могут произвести некоторый вывод, за исключением); третий из них почти идентичен первым двум, за исключением того, что он будет производить в дополнение к любому другому выходу, который первый из них производит, строка Already on 'master'. Последняя команда, в отличие от всех остальных, будет отбрасывать все неустановленные изменения.

Пропустил ли я что-нибудь?

ответ

0

Согласно TFM, существует четыре формы команды git checkout. Ваши первые два примера - один из них, а два других - два.

Так, чтобы ответить на ваш вопрос, вы пропустили последнюю форму git checkout:

git checkout -b <new branch name> <start point>

+0

Откуда вы получаете «четыре»? связанная с вами страница начинается с 5 различных шаблонов, содержащих 'git checkout' ... – kjo

+0

Прокрутите вниз, есть четыре основных абзаца описания. Несовпадение немного странно, если быть уверенным. –

0

Первые 3 являются одинаковыми (и не являются не нет-OPS, если вы сделали изменения некоторых файлы они будут заменены на те, что указаны в конце мастера). Четвертый проверяет только файлы в '.', То есть текущий каталог.