Более простое объяснение пути для команды проверки GIT - PullRequest
2 голосов
/ 20 сентября 2010

В документации git для команды извлечения найден следующий текст:

... Если пути не указаны, git checkout также обновит HEAD до установить указанную ветвь как текущая ветка ....

Может ли кто-нибудь дать более простое объяснение того, что это значит? Извините, если это кажется простым, и, читая эту страницу, я не могу понять, что именно это означает. Извините, если это кажется основным ..

В частности, я запутался в том, как checkout обновляет HEAD. Я обычно предполагаю, что извлечение влияет на рабочий каталог - это уникальная возможность, позволяющая использовать вашу локальную копию хранилища для дальнейшей работы с ней?

Ответы [ 4 ]

3 голосов
/ 16 января 2013

Версия A: (с указанием только ветвь)

git checkout <branch>

Получает все файлы для этого и помещает HEAD (указатель «где я сейчас») в указанную ветку.

Версия B: (с указанием пути только )

git checkout <file>

Получает последнюю версию и оставляет HEAD в покое.

3 голосов
/ 20 сентября 2010

HEAD - указатель на коммит, с которого была извлечена ваша рабочая копия. так что если вы извлекаете ветку (или коммит или тэг), то HEAD устанавливается на этот коммит.

эта информация хранится в текстовом файле .git/HEAD, вы можете просто посмотреть его содержимое:

$ cat .git/HEAD
# refs: refs/heads/master
3 голосов
/ 20 сентября 2010

Это означает, что git checkout branchname будет

  1. Извлеките файлы из кончика этой ветви в свой рабочий каталог и
  2. Установите HEAD на вершину этой ветви, так что теперь вы «на нем».

Пример:

 jb@apto % git branch         
 * develop
   master
   next
 jb@apto % git checkout master
 Switched to branch 'master'
 jb@apto % git branch
   develop
 * master
   next
1 голос
/ 20 сентября 2010

Если вы находитесь в режиме DETACHED HEAD (см. этот вопрос ), вы можете легко сбросить HEAD в основную ветвь:

дд http://marklodato.github.com/visual-git-guide/checkout-b-detached.svg

Здесь 'git checkout' будет сбрасывать HEAD на вершину ветви master.
(Подробнее в " Справочник по Visual Git ")
Он также обновит как индекс, так и рабочий каталог.
Так что дело не только в сбросе указателя 'HEAD'.

...