Во-первых, примечание: удаленное хранилище может иметь более одной ветви; также HEAD означает (для локальной разработки и локальных веток) текущую извлеченную ветвь, а для удаленной ветки удаленного отслеживания (символьная ссылка) remote/HEAD
означает ветку по умолчанию на удаленной. Нет такой вещи, как «ГОЛОВА ветви»; HEAD - указатель на ветвь (или иногда на коммит).
Во-вторых, Git работает (как Новелократ написал ) на уровне всего дерева (все файлы в хранилище). В Git вы извлекаете ветку (хотя вы также можете извлекать версию файла из некоторой ветки в рабочую директорию, это менее обычная операция).
В Git вы можете создавать новый коммит только поверх какой-то локальной ветки. Вы не можете создавать коммиты непосредственно в ветвях удаленного отслеживания, так как они предназначены для веток удаленного репозитория (и вы потеряете свою работу при получении).
Следовательно, простое «git checkout origin
» (при условии, что пульт дистанционного управления называется origin
), которое является сокращением для «git checkout origin/HEAD
», которое обычно «git checkout origin/master
», будет проверять состояние удаленного отслеживания ветвь в неназванную ветвь, так называемую отдельную ГОЛОВУ. Это хорошее решение, если вы хотите только просмотреть / просмотреть состояние ветки удаленного отслеживания.
Если вы используете «git checkout --track origin/master
», это создаст локальную ветвь master
, которая предназначена для отслеживания (отслеживания) ветки удаленного отслеживания origin/master
. Обратите внимание, что git-clone автоматически устанавливает такую локальную ветвь (обычно master
) для ветки по умолчанию (origin/HEAD
) удаленной origin
(обычно origin/master
), поэтому вам не придется этого делать. Затем просто «git pull
», когда в ветке master
будет извлекать (при необходимости), и попытаться объединить ваши локальные изменения с изменениями в соответствующей ветке в удаленном хранилище. Если бы не было никаких изменений в удаленном, это состояние «актуально», и ваша локальная ветвь не изменится; если в вашей локальной ветви не было никаких изменений, а были в удаленной, то локальная ветвь просто переводится в состояние удаленной ветки, которая называется «ускоренная перемотка вперед». Вы можете думать о "git pull
" здесь как о очень, очень грубом эквиваленте "svn update
".
Вы также можете принудительно перевести в локальном филиале в состояние удаленного отслеживания с помощью "git reset --hard origin
". Обратите внимание, что --hard
означает здесь принудительную перезапись рабочего каталога, поэтому любые несвязанные изменения будут потеряны! Используйте с осторожностью.
Наконец, если вы хотите извлекать отдельный файл из ветви удаленного отслеживания (то есть иметь в рабочем каталоге версию файла, как в ветви удаленного отслеживания), вы можете просто использовать 'pathspec 'git-checkout, а именно "git checkout origin -- file
". Если вы хотите видеть только, как файл выглядит в ветке удаленного отслеживания, используйте "git show origin:path/to/file
".
НТН