TL; DR
Использование git flow .
Это удалит вопросы и автоматизирует некоторые вопросы, о которых вы спрашиваете,Когда вы знакомы с git flow и ветвлением и т. Д., Вы можете легко сделать что-то по-другому - или вручную.
Изменения, которые будут отражены и на моей домашней машине
На вашем imac push / pull для not-master и на домашней машине push / pull от not-master.
Где «not-master» - это любая ветка, над которой вы сейчас работаете.
Разветвленные ветви
Ваш рабочий процесс должен помочь вам не мешать разработке.Например, что, если два разработчика совместно работают над одной и той же задачей - хотите ли вы заставить их работать в разных отраслях?В функциональных ветвях, вероятно, больше смысла, хотя нет ничего плохого в том, чтобы иметь пользовательские ветки.
Отдельная производственная ветвь
Однако вы делаете это - ваше живое приложение должно тянутьиз известного стабильного тега / ветви и, как правило, не переходите непосредственно к мастеру , потому что ломать вещи - это часть разработки, а ломать код, из которого извлечет ваше живое приложение, - то, что вам абсолютно необходимоизбежать.Вы должны быть в состоянии в любой момент установить свою живую установку, не сомневаясь, что вы можете использовать поврежденный код.Если вы используете сервер Continuous Integration , вы можете легко автоматизировать слияние из вашей ветки разработки в мастер, если все тесты пройдены, и даже автоматически развернуть.
Когда ветвьзакончили с
Все сомнения рабочего процесса - это одно и то же.когда ветка закончена, вы объединяете ее с вашей основной веткой.
то есть
$ git branch working-on-this master
$ git add ...
$ git commit ...
$ # rinse and repeat
$ git push --set-upstream $REMOTE working-on-this
А когда приходит время:
$ git checkout master
$ git pull
$ git merge working-on-this
$ git push
$ git branch -d working-on-this
$ git push $REMOTE :working-on-this
Вы не делаетеявное удаление всех веток на других машинах;однако любой в любое время может запустить:
$ git branch --merged master
, который, если ветка закончена, будет выглядеть следующим образом:
$ git branch --merged master
master
working-on-this
$ git branch -d working-on-this
Что означает, что работа над этим может быть безопасно удалена,В любом случае - git branch -d
выдает предупреждение и прерывает работу, если вы пытаетесь удалить ветку, которая не объединена с веткой, в которой вы находитесь при выполнении команды.
Если вы обнаружите, что у вас есть несколько удаленныхветви, которые, как считается, уже завершены - вы можете очистить их одной командой:
$ git remote prune -n origin
Флаг -n
означает, что он будет сообщать только о том, какие ветви он собирается удалить - убрать этот флаг на самом делеудаление устаревших удаленных веток
Если в одной и той же ветке работают несколько разработчиков (совместная работа) общение является ключевым не полагайтесь на рабочий процесс, активно говорите об удалении чего-либо, прежде чем покинуть одно изваша команда работает в (якобы) законченном филиале.
Ограничение разрешений на принятие изменений в филиале
Да, вы можете это сделать, но действительно ли вы этого хотите?Вам лучше использовать общение и соглашения.
Некоторые предложения:
- любой может создать удаленную ветку
- никто не фиксирует / не объединяется с мастером (только лидерство)это делает dev)
- никто не удаляет удаленную ветвь (это делает только ведущий разработчик)
- никто не удаляет удаленный сервер (это делает только ведущий разработчик)
Любой, кто , может в любое время выполнить любое из перечисленных выше действий, но, если вы доверяете своей команде в целом, нет никаких оснований фактически ограничивать разработчиков, чтобы они не делали этого - вероятно, будут времена, когда им нужночтобы разбить ряды, и правила предотвращают это, в то время как соглашение не делает.