"Эта ветвь является 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 9

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 , что вам очень поможет.