2016-12-15 2 views
0

Мой текущий рабочий процесс на основе мастерских заключается в разработке исправлений в master и новых возможностях в отрасли develop. Когда пришло время освобождения, я делаю следующее:Простой рабочий процесс на основе мастерства

git checkout master && git pull 
git checkout develop && git rebase master 
git checkout master && git merge develop 
git push 

Могу ли я сделать то же самое с меньшим количеством команд? Я хотел бы опустить несколько checkout s, если это возможно.

ответ

1

Посмотрим. (Это предполагает, что пульт дистанционного управления с именем origin)

git fetch origin master 
git rebase origin/master develop 
git checkout master && git merge --ff-only develop 
git push 

ноты:

  • git rebase origin/master develop точно так же, как git checkout develop && git rebase master

  • Я использую --ff-only при объединении для ясности, потому что это слияние не будет создавать любые новые коммиты, просто переместите указатель ветки.

Итак, исходный новый код еще 4 строки, но проверка появляется только один раз. Возможно, вы сможете немного уменьшить количество проверок, используя идеи от this question, но я проигнорирую это.

Вы можете дополнительно уменьшить typeing (но не GIT времени выполнения), создавая GIT псевдоним с несколькими командами (as seen here), начиная псевдоним с восклицательным знаком (!).

Вы можете создать псевдоним, как так:

git config --global alias.pushDevelop '!git fetch origin/master; git rebase origin/master develop; git checkout master; git merge --ff-only develop; git push' 

Вы бы затем использовать команду таким образом: git pushDevelop.

Вы также могли бы заменить третью строчку с git branch -f master и воссоздать master ветвь на develop отрасли, но это может привести к потере данных трекинга. (Эта команда заставляет создать ветвь master. Требуется -f, так как git не может иметь две ветви с тем же именем.

Смежные вопросы