Как репозиторий Git работает с ветвью разработки и мастера?
Я новичок в Git, и это действительно запутывает. Я хотел начать разработку веб-приложения на Git, и до сих пор я имел дело с проблемами, которые удерживали меня.
Я прочитал этот блог в успешной ветвящейся модели для Git. Мне очень хотелось установить что-то похожее на это.
В нем говорится, что в репозитории есть две основные ветки, называемые master
и develop
. Поэтому я пошел вперед и создал репозиторий. Однако, к моему удивлению, сам репозиторий был дефолтной ветвью master
. Как я должен был создать ветвь develop
? Создать его в родительском ветки master
? Это означало бы, что ветвь develop
находится вне репозитория.
Я что-то совершенно не так понял? Я просто игнорирую тот факт, что я создаю две ветки внутри главной ветки?
Ответы
Ответ 1
Ветвь не является каталогом. Это метка фиксации, которая перемещается вместе с фиксацией, например, тег - это метка фиксации, которая остается с определенной фиксацией. У вас не будет ничего "внутри" ветки master
, а master
и develop
оба изначально будут отмечать одну и ту же фиксацию.
Создайте ветвь разработки так:
git branch develop
Чтобы уточнить: допустим, у вас есть начальная команда A. Он будет помечен как ветвь master
.
git init
A [master]
Если вы создадите новый фиксатор B, метка ветки переместится:
git commit -a
A -> B [master]
Если вы затем перейдете в develop
, B также получит новую метку:
git branch develop
A -> B [master, develop]
Если вы зафиксируете на develop
, он будет перемещаться, но master
не будет:
git checkout develop
git commit -a
A -> B [master] -> C [develop]
Если вы теперь зафиксируете на master
, дерево будет fork:
git checkout master
git commit -a
A -> B -> C [develop]
+--> D [master]
Между тем у вас есть только в вашем каталоге все содержимое вашего текущего коммита. Разверните ветки и измените содержимое каталога.
Ответ 2
Филиал master
создается по умолчанию; вы можете думать об этом как о "туловище" в других системах VCS. Разветвление develop
, используемое в ветки ветвящейся модели nvie, от master
, предположительно от первого фиксации.
Ветвь develop
является нормальной ветвью от master
.
git branch develop
создает ветвь develop
.
В nvie-ветвящейся модели все работы по разработке выполняются на ветке develop
и только сливаются с мастером и помечены там, когда код готов к выпуску. Типичный рабочий процесс, который используют многие люди, - это просто сделать все разработки master
и тегом, когда код готов к выпуску.