"Эта ветвь является 1 фиксацией впереди, 1 фиксацией позади мастера" в Github при использовании " успешной модели ветвления Git"
Я работаю в чистом РЕПО только с одним файлом. Я-единственный разработчик.
Я хочу сделать рабочий процесс Development-release-master в успешной модели ветвления git , поэтому я сделал:
Примечание: пожалуйста, имейте в виду, что у меня по умолчанию отключена быстрая перемотка вперед, поэтому рассматривайте все команды merge
Как merge --no-ff
.
Моего происхождения является GitHub.
Вглавной ветви:
git add .
git commit -m "Initial commit"
git push origin master
git checkout -b develop
В развивают отрасль. Я делаю изменения в файле, затем:
git add .
git commit -m "work in the file"
Я готов выпустить это как версию 0.0
git checkout -b release-0.0 develop
Врелизе-0.0 ветка. Я добавляю в файл номер версии.
git add .
git commit -m "Bumped version 0.0"
Я готов слить это освобождение в мастера.
git checkout master
git merge release-0.0 -m "Releasing v0.0"
git tag -a 0.0 -m "Version 0.0"
... и в развитие.
git checkout develop
git merge release-0.0 -m "Merge release 0.0 into develop"
Затем я толкаю как мастер , так и развитие к Github
git push origin master
git push origin develop
Когда я проверяю ветвь Development в Github, она говорит:
Эта ветвь-1 коммит вперед, 1 совершайте за спиной мастера.
Ветвьmaster не имеет такого сообщения.
Что я могу сделать, чтобы исправить это? Оба master и develop должны быть равны в этот момент, так как они были объединены с release-0.0.
3 ответа:
Нет, это не будет равно, так как вы по умолчанию отключили быструю перемотку вперед. Каждое слияние создает новый коммит, и коммит слияния имеет другой идентификатор. Поэтому фиксацию в мастер не фиксацию в разработке. И поэтому у развития есть фиксация не в Мастере, в то время как мастер имеет фиксацию не в развитии. Отсюда и послание в развитии.
Что касается сообщения, отсутствующего в master, то это потому, что сообщение приходит, когда ветвь сравнивается с master. Так что если сравнить мастера с мастер, в этом послании нет необходимости.
Одним из решений является включение быстрой переадресации и явное создание коммитов слияния в release и master, а затем сохранение быстрой переадресации. Другой вариант-перебазировать Development после каждого слияния в master. То, как вы хотите это сделать, - это исключительно ваш личный выбор в зависимости от вашего рабочего процесса и кода.
Кроме того, сообщение не является чем-то, о чем вы должны беспокоиться, пока код в ветвях точно такой, как вы хотите.
Просто чтобы добавить к другим ответам:
Оригинальныйgit-flow не разрабатывался с 2012 года, и он был замененgit-flow AVH edition во многих местах (включаярепозитории Ubuntu иGit для Windows ).
Одно из различий, введенных редакцией AVH, заключается в том, что окончательное слияние-это слияние master* в develop, а не release в развивайте .
Это делает master непосредственным родителем develop и должно устранить одну часть сообщения, которое вы видите; должен остаться только "1 commit ahead". Это также немного облегчает проверку того, что Мастер и развитие не разошлись случайно.
* точнее, это новый тег (на master), который объединяется в Developer.
Поскольку вы используете
--no-ff
, каждый отдельный mere будет другим коммитом. При слиянииrelese-0.0
в Developer и в master коммиты слияния будут разными. Вот как это выглядит:Как вы можете видеть, ветвь разработки имеет один коммит (Merge release 0.0 into Development), который не находится в (не доступен из) master, а ветвь master имеет один коммит (Release v0.0), который не находится в ветви разработки. И вот что говорит гихуб с этим сообщением и это совершенно нормально (содержание то же самое, но коммиты разные).
Если вы хотите использовать git flow, вы должны взглянуть на https://github.com/nvie/gitflow , что вам очень поможет.