Каковы концепции git HEAD, master, origin?

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

Ответ 1

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

HEAD: текущий фиксатор вашего репо включен. В большинстве случаев HEAD указывает на последнюю фиксацию в вашей ветке, но это не обязательно. HEAD на самом деле просто означает "что мое репо сейчас указывает на". Спасибо svick за хедз-ап на этом (не каламбур)

В случае, если commit HEAD означает не кончик какой-либо ветки, это называется "отсоединенной головкой".

master. Имя ветки по умолчанию, которое git создает для вас при первом создании репо. В большинстве случаев "мастер" означает "главная ветвь". В большинстве магазинов все стремятся к мастерству, а хозяин считается окончательным видом репо. Но он также распространен для ветвей выпуска, которые должны быть освобождены от мастера для освобождения. В вашем локальном репо есть своя собственная ветвь, которая почти всегда следует за мастером удаленного репо.

origin. Имя по умолчанию, которое git предоставляет вашему основному удаленному репо. У вашей коробки есть свое собственное репо, и вы, скорее всего, выталкиваете на какое-то отдаленное репо, которое вы и ваши коллеги нажимаете. Это отдаленное репо почти всегда называется происхождением, но оно не обязательно должно быть.

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

Ответ 2

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

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

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

Ответ 3

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