2015-08-20 2 views
1

Предположим, что один находится на ветке «master» и что HEAD находится на кончике ветки (скажем, на фиксации C). Предположим, что тогда выполняется git reset --hard HEAD^3 назад для фиксации A. Затем HEAD теперь относится к A.Говорит ли HEAD, что означает «хозяин» (в этом контексте)?

Вопрос: ли «мастер» также относятся к A, или он все еще указывает на C? Иначе говоря: в этом контексте HEAD всегда ссылается на то, что делает ветвь «master» (т. Е. При условии, что наш репозиторий имеет только одну ветвь с именем «master»)?

+0

Возможный дубликат [Разница между HEAD и ведущим] (http://stackoverflow.com/questions/4386959/difference-between-head-and-master) – vitorbal

+0

Проще говоря, ответ отрицательный. Взгляните на этот вопрос, я думаю, что принятый ответ очень хорошо объясняет разницу между «мастером» и «ГОЛОВКОЙ»: http://stackoverflow.com/questions/4386959/difference-between-head-and-master – vitorbal

+0

Что совершает между 'A' и' C'? 'git reset HEAD ~ 3' возвращает вас * три * фиксирует позади, поэтому вы, вероятно, хотите, чтобы в вашем примере были четыре коммиты:' A - B - C - D'. – Jubobs

ответ

0

Давайте проверим это, текущая ветвь:

$ git branch 
* master 

текущее состояние репо:

$ git log --oneline 
e585b43 C 
4bbf8be B 
6ae7d39 A 
fb4949b Initial commit 

Давайте перебазировать его:

$ git reset --hard HEAD~3 
HEAD is now at fb4949b Initial commit 

Давайте проверить, где точки ГОЛОВЫ:

$ git log HEAD --oneline 
fb4949b Initial commit 

Давайте посмотрим, где главные пункты:

$ git log master --oneline 
fb4949b Initial commit 

Как вы можете видеть HEAD и master точка в то же совершают

+0

Значит, мастер не настаивает на обращении к кончику ветки, в этом случае commit C? Разве это не противоречит ответу Джорана? – George

+0

* 'HEAD' и' master' указывают на тот же коммит. * Опять же, это неточно. 'HEAD' указывает на' master', который сам указывает на фиксацию 'fb4949b', но' HEAD' не указывает прямо на фиксацию 'fb4949b', в этом случае. – Jubobs

2

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

В этом случае git reset --hard HEAD~3 изменяет HEAD и master, чтобы ссылаться на одну и ту же фиксацию.

Смежные вопросы