Предотвращение git слияния для ветвления
Я использую ветвление для создания и развертывания пользовательских экземпляров вне платформы. Эти экземпляры обычно начинаются как ветка из ветки "master", немного настраиваются, развертываются в процессе тестирования и производства и, наконец, архивируются.
Если в мастер добавлены новые функции или исправления ошибок, я хотел бы получить/объединить их в свои экземпляры проектов (ветки), но я почти никогда не хочу объединять обратно изменения от ветвей к главному. Это произошло недавно по ошибке и вызвало серьезные головные боли. A git pull для обновления репозитория объединил все в главную ветвь, а затем был возвращен в основное репо.
Есть ли простой способ запретить слияние обратно в мастер? Или, по крайней мере, требующий какого-то флага -force?
Ответы
Ответ 1
Вы можете не допускать слияния с мастером из других ветвей, запрещая кому-либо нажимать главную ветку. Это может сделать человек с полномочиями. Гитолит - это то, что позволяет вам точно настроить доступ к ветвям. Вы также можете написать свои собственные серверные крючки и отклонить обновление ведущей ветки, если вы не являетесь конкретным пользователем.
Ответ 2
Git очень рад работать с несколькими удаленными репозиториями.
Я бы рекомендовал использовать один удаленный репозиторий для каждого настраиваемого экземпляра. Это не изменит ваш рабочий процесс, так как Git может объединить любые две ветки независимо от источника.
Чтобы обновить "настраиваемый экземпляр" с исправлениями ошибок с вашего "главного пульта", вы должны ввести что-то вроде
git checkout <custom-branch>
git fetch main
git merge main/master
где main
- это удаленный репозиторий, на который вы ссылаетесь как master
(я изменил имя, чтобы избежать путаницы между веткой и удаленным)
Для ваших локальных ветвей не указывайте main
как ветку удаленного отслеживания, а укажите конкретный экземпляр. то есть один удаленный репозиторий для каждого настраиваемого экземпляра.
Чтобы внести изменения в свой собственный экземпляр, используйте
git push
В редком случае, когда вам нужно нажать изменения вверх по течению к ветке "master", используйте
git push main
Ответ 3
Если вы просто хотите избежать слияния с мастером, вы можете использовать pre-merge hook, чтобы запретить его.