Как Git-репозиторий работает с ветвью разработки и мастера? - PullRequest
24 голосов
/ 02 июня 2011

Я новичок в Git, и это действительно сбивает с толку. Я хотел начать разработку веб-приложения на Git, и до сих пор я имел дело с неприятностями, которые удерживали меня.

Я прочитал этот блог сообщение об успешной модели ветвления для Git. Мне было действительно интересно создать что-то похожее на это.

В нем говорится, что в хранилище есть 2 основных ветви: master и develop. Итак, я пошел дальше и создал хранилище. Однако, к моему удивлению, сам репозиторий был веткой по умолчанию master. Как я должен был создать ветку develop? Создать ли его в родительском элементе ветви master? Это означало бы, что ветвь develop находится вне хранилища.

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

Ответы [ 2 ]

29 голосов
/ 02 июня 2011

Филиал не является каталогом. Это метка коммита, которая перемещается вместе с коммитами, подобно метке коммита, которая остается с определенным коммитом. У вас не будет ничего "внутри" ветви master, скорее * master и develop будут изначально обозначать один и тот же коммит.

Создайте ветку разработки так:

git branch develop

Чтобы уточнить: допустим, у вас есть начальный коммит A. Он будет помечен как master branch.

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, дерево раскошелиться:

git checkout master
git commit -a

A -> B -> C [develop]
     +--> D [master]

Между тем, у вас есть только в вашем каталоге, каким бы ни было содержимое вашего текущего коммита. Переключите ветки, и содержимое каталога изменится.

14 голосов
/ 02 июня 2011

Ветвь master создается по умолчанию; вы можете думать об этом как о "стволе" в других системах VCS. Ветвь develop, используемая в модели ветвления nvie, ветвится от master, предположительно от первого коммита.

Ветвь develop является нормальной ветвью с master.

git branch develop создает ветвь develop.

В модели ветвления nvie вся работа по разработке выполняется в ветви develop и объединяется с мастером и помечается там, когда код готов к выпуску. Типичный рабочий процесс, который используют многие люди, - это просто передать всю разработку на master и пометить, когда код готов к выпуску.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...