Git checkins для ветвления, если мастер не синхронизирован - PullRequest
0 голосов
/ 09 января 2012

Недавно перешел из svn в git, извините за вопрос новичка.

В нашем процессе выпуска мы кодируем для master (и ветвей разработки), мы выпускаем релизы раз в несколько недель, на тот момент мы создаем ветвь и выпускаем для этой ветки.

Исправления ошибок продолжаются в ветке, и мы обновляем сервер релизов этими исправлениями.

Теперь, когда я пытаюсь сделать это в git и зафиксировать изменения в ветке релиза, он не позволяет мне фиксировать и отправлять изменения в ветку, если мой мастер не синхронизирован с origin / master. Это становится грязным, если есть много веток релиза, теперь я должен убедиться, что каждая из них синхронизирована, прежде чем я смогу исправить ошибку в релизе и проверить ее.

Как вы решаете эту проблему?

Ответы [ 3 ]

2 голосов
/ 09 января 2012

Моя команда в настоящее время выполняет релизы в точности так, как вы описали в SVN.Код против ствола, ветвления и выпуска.

В Git изменился рабочий процесс - master соответствует производству и никогда не затрагивается, создание и удаление веток безболезненно и «дешево-как-фишка» в Git, поэтому каждыйизменение / исправление / разработка всегда против ветки.Это также позволяет отслеживать каждую разработку в отдельности.

Как только разработка завершена и протестирована, объединитесь с master, отметьте и отпустите.Для оперативного исправления ветвь master, тестирование, выпуск и слияние до master.

Для людей, работающих в других ветках, ветки могут быть легко обновлены с помощью merge.

Посмотрите, как github развивается с использованием git, очень интересного чтения, которое должно ответить на ваш вопрос - https://github.com/usm-data-analysis/usm-data-analysis.github.com/wiki/Developing-with-git

0 голосов
/ 09 января 2012

Вы используете простой git push.По умолчанию git push будет пытаться протолкнуть каждую ветку.Вы можете настроить свою конфигурацию на использование push.default = tracking.

git config push.default tracking

или

git config --global push.default tracking

При push.default = tracking, git push будет только выдвигать текущую ветвь.

0 голосов
/ 09 января 2012

Вы просто делаете "git push"?Вы можете нажать одну ветку (а не все с совпадающими именами), используя "git push origin somebranch".

...