[...] почему отдельная ГОЛОВА даже существует? Почему он не может по умолчанию не проверять новую ветку?
Позвольте мне попробовать следующую метафору. Если вы думаете о вашем репозитории Git как фотоальбом, который ведет хронику истории вашего хранилища ...
- Вы можете думать, как ветви закладки; они отмечают достопримечательности в вашей истории, снимки, на которые вы, скорее всего, вернетесь, на какой-то стадии ... если только из ностальгии :)
- Вы можете представить ссылку
HEAD
как один из ваших пальцев, оставляя книгу открытой на определенной странице.
Теперь представьте себе, если вы разрешили открыть книгу только там, где есть уже закладку. Это было бы очень ограничительным и громоздким: вы должны создать и использовать много закладок только для того, чтобы посетить некоторые страницы истории:
Вместо этого, Git позволяет пролистать книгу и открыть его на любой странице, которую вы представляете. Затем, если вы заметили какой-то конкретный моментальный снимок, на который вы заинтересовались, вы всегда можете создать для него новую закладку (ветку).
Вкратце, поэтому состояние автономного состояния полезно. Это позволяет вам проверять любые фиксации, даже те, на которые не указывает ни одна ветвь. Если вы решите, что хотите создать новую работу над рассматриваемым коммитом, тогда было бы разумно создать новую ветвь, которая указывает на эту фиксацию; но в противном случае создание новой ветки будет излишним.
Почему мерзавец дает отдельностоящий ГОЛОВУ, проверяя новый удаленный филиал?
Я предполагаю, что вы, вероятно, запустить
git checkout <remote-branch>
и удивлён, что она отсоединяет HEAD
. Вы должны знать, что Git различает
- дистанционного отслеживание ветви, которые являются локальными для вашего репозитория, но только предназначены, чтобы отразить то, что отрасль живет в удаленном хранилище выглядела как последний раз, когда вы сообщенный с сервером; вы не можете работать в таких филиалах; и
- (чисто) местные филиалы, которые могут работать.
Если вы просто запустить
git checkout <remote-branch>
нет местного отделения для вас играть будет создан, и вы будете в конечном итоге в detached- HEAD
состоянии. Вы можете захотеть запустить
git checkout -b <new-local-branch> <remote-branch>
вместо этого. Это создаст и проверит новую локальную ветвь, указывающую на ту же фиксацию, что и удаленная ветвь. Не отсоединяется HEAD
.
Спасибо за подробное описание. Это действительно дает мне общую картину того, что предназначено. Теперь у меня есть лучшее представление о том, что было с моим вопросом. Я обновлю его. e описание. –