Каковы git концепции HEAD, master, origin? - PullRequest
163 голосов
/ 19 ноября 2011

Поскольку я изучаю git, я постоянно сталкиваюсь с терминами HEAD, master, origin, и я не уверен, в чем различия.Если я правильно понимаю, HEAD всегда равен последней ревизии?И если да, то это последняя версия всего хранилища или конкретной ветки или тега?Это так запутанно.Я прочитал так много учебников по этому вопросу и по таким вещам, как ветвление / слияние, но все еще не могу обдумать это.

Ответы [ 3 ]

194 голосов
/ 19 ноября 2011

Я очень рекомендую книгу "Pro Git" Скотта Чакона .Потратьте время и действительно прочитайте его, одновременно изучая реальное git-репо.

HEAD : текущая фиксация вашего репо.Большую часть времени HEAD указывает на последний коммит в вашей текущей ветке, но это не обязательно так.HEAD на самом деле просто означает «на что сейчас указывает мой репо».

В случае, если коммит, на который ссылается HEAD, не является вершиной какой-либо ветви, это называется «отстраненной головой».

master : имя ветви по умолчанию, которую Git создает для вас при первом создании репо.В большинстве случаев «мастер» означает «основной филиал».В большинстве магазинов все стремятся к мастеру, и мастером считается окончательный взгляд на репо.Но для выпусков ветки релиза также являются обычным делом.У вашего локального репо есть собственная мастер-ветка, которая почти всегда следует за мастером удаленного репо.

origin : имя по умолчанию, которое git дает вашему главному удаленному репо.В вашем ящике есть собственное репо, и вы, скорее всего, продвигаетесь к какому-либо удаленному репо, к которому вы и все ваши коллеги продвигаетесь.Это удаленное репо почти всегда называется origin, но это не обязательно.

HEAD - это официальное понятие в git.HEAD всегда имеет четкое значение.master и origin - это общие имена, обычно используемые в git, но они не обязательно должны быть.

34 голосов
/ 19 ноября 2011

HEAD - это не последняя версия, это текущая версия. Обычно это последняя версия текущей ветки, но это не обязательно.

master - это имя, обычно назначаемое основной ветви, но оно может называться как угодно (или основной ветви не может быть).

origin - это имя, обычно назначаемое главному пульту. remote - это еще один репозиторий, из которого вы можете извлечь и нажать. Обычно это на каком-то сервере, например на github.

9 голосов
/ 19 ноября 2011

Хотя это не дает прямого ответа на вопрос, есть бесплатная книга, которая поможет вам изучить основы под названием ProGit .Если вы предпочитаете версию из сухостойного дерева, а не коллекцию битов, вы можете приобрести ее у Amazon .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...