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