Повторное использование ветки разработки после слияния - PullRequest
0 голосов
/ 04 мая 2018

Git новичок здесь! Вот сценарий: приложение, созданное в Laravel + Envoyer для развертывания. Итак, у меня есть главная ветка / разработка, первая развертывается на site.com, а другая на dev.site.com

Я разработал новую функцию в ветке разработки и протестировал ее на dev.site.com. Итак, я объединил ветку разработки в ветку master. Теперь кажется, что ветвь разработки больше не активна (любое изменение влияет на ветку master и наоборот). Другими словами, они больше не разделены.

Я читал, что повторное использование ветки после слияния не является хорошей практикой, но в этом конкретном случае мне нужно снова иметь ветку с именем "развивающихся".

Я попытался удалить ветвь разработки и создать новую с тем же именем (как предложено здесь ), но безуспешно: похоже, старая ветка разработки восстановлена.

Любой совет?

Снимок экрана из битбакета

1 Ответ

0 голосов
/ 05 мая 2018

В git ветки легкие. Вы можете рассматривать ветку как просто метку или указатель на определенный коммит X. Когда вы «фиксируете ветку», он связывает старый коммит с новым коммитом с отношениями родитель-потомок и продвигает ветку указатель. Отношение сохраняется в коммите, оно отдельно от существования метки ветви.

У каждого коммита может быть несколько родителей. Вот что произошло, когда вы слились: он сделал новый коммит M с 2 родителями (так называемый «слияние»). В тот момент (если это было сделано правильно) ваша ветвь "master", вероятно, указывала на коммит слияния M, а ваша ветвь "Develop" все еще указывает на ваш последний коммит dev (я полагаю, что это 83bebd6, если синяя ветвь "развивается").

Теперь, чтобы узнать, расходятся ли ваши ветви или нет, вы можете запустить:

git show master
git show develop

Это покажет коммит, на который указывает каждая ветвь (снова подумайте в терминах меток коммитов).

Чтобы узнать, в какой ветке вы находитесь в данный момент, вы запускаете git branch. Если вы в данный момент находитесь на «master», это означает, что каждый коммит будет продвигаться и обновлять master «label» (и он будет «расходиться» от любых других ваших веток, как только вы делаете коммит, потому что обычно вы не можете фиксировать несколько веток одновременно).

Хотя это опасная и разрушительная операция, вы всегда можете «сбросить» метку «ветки», чтобы указать на какой-либо другой (предыдущий или даже совершенно не связанный) коммит:

git checkout develop
git reset --hard 83bebd6

Это будет локально делать так, чтобы "развивать" очки для совершения 83bebd6.

Если вы хотите, чтобы эта ветвь сбрасывалась на сервере bitbucket (а это еще более опасно и разрушительно), вы делаете:

git push -f
...