2016-08-31 2 views
0

Из того, что я видел, когда люди переключаются на существующую ветку, они не переключаются на конкретную фиксацию на ветке. Почему нет?Почему люди не переключают конкретную фиксацию после переключения на ветку?

Когда мы переключаемся на существующую ветку, правильно ли мы автоматически переключаемся на последнюю фиксацию на ветке?

Верно ли, что люди, заинтересованные в ветке, интересуются только последним фиксацией на ветке, а не другими коммитами на ветке?

Какая команда используется для переключения на фиксацию?

+0

Возможно, вам будет интересно прочитать ветвящую часть учебника git: https://learningpassion.wordpress.com/2016/06/19/git-tutorial-day-to-day-use-part-6-branching -in-a-nutshell/ – joker

ответ

1

Когда мы переключаемся на существующую ветку, правильно ли мы, что автоматически переключается на последнюю фиксацию на ветке?

Да, это правда.

Верно ли, что люди, которые заинтересованы в отрасли только заинтересованы в последний коммит на ветке, а не в других фиксаций на ветке?

Это неправда. Если вы переключитесь на ветку с целью внесения изменений и затем совершите их, вы почти наверняка означаете, что эти изменения попадают в эту самую ветку. Если вы перейдете к последней фиксации этой ветви, то вы будете в detached HEAD state, и ваши коммиты будут отправлены в другое место (в виде анонимной ветки).

+0

Спасибо. Что вы подразумеваете под «отдельным штатом»? – Tim

+0

@Tim Читайте это: https://www.git-tower.com/learn/git/faq/detached-head-when-checkout-commit – Leon

1

Это зависит. Если вы проверяете ветку, вы выбираете последний доступный фиксатор, если вы только переключаетесь на тот, который уже был проверен, вы будете выбраны тот, на котором вы работали, или последний из ваших выписок на локальный компьютер (HEAD).

В большинстве случаев люди, заинтересованные в последнем фиксации, потому что не хотят иметь старую версию проекта (возможно, есть ошибка или нет функции). Люди могут захотеть получить более старую фиксацию, если они, например, хотят сделать какую-то функцию в другой ветке, которая не имеет некоторых новых функций в текущей ветке. Или узнать, что было в коде более старого коммита.

+0

Спасибо.Какая команда используется для переключения на фиксацию? – Tim

+1

'git checkout ', где фиксация может быть указана любым из нескольких способов. Самым общим является 40-символьный sha1sum, но вы также можете указать 'HEAD ~ 1' или имя тега. –

4

Ветвь является указателем на фиксацию. Так что да, когда вы проверяете ветку, вы проверяете фиксацию, на которую указывает ветка, и никакая другая фиксация. Другие старшие коммиты, которые вы видите, «в одной ветви» вообще не указываются веткой. На них указывают их материнские коммиты.

Кто-то, проверяющий ветку, может быть заинтересован в более старых коммитах, но сказать, что эти коммиты находятся на одной ветви, немного вводит в заблуждение. У Гита нет таких ветвей. Старшие коммиты являются частью истории фиксации проверенного фиксации, а не ветви.

Чтобы проверить фиксацию, просто сделайте git checkout <sha-1>. Это приведет к отключению вашего HEAD, что означает, что вы не проверили ответвление. Конечно, полная история фиксации проверенного фиксации доступна, что не имеет ничего общего с веткой.

+1

Я просто хотел сказать, что это одно из лучших кратких, но ясных и полных объяснений конкретной утилиты git, которую я видел здесь. – BlueSpaceCanary

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