35

мы недавно переключились с SVN на Git и в то же время перевели наши действующие системы в систему управления версиями (вместо локальной проверки и копирования файлов в живую).

В проекте, который мне назначен, мы все имеем доступ к одному и тому же репозиторию, и чтобы внести изменения в живую жизнь, мы просто git pull туда. Это вызывает проблемы, потому что наши веб-дизайнеры вносят изменения в VCS, которые еще не должны быть активными, но должны быть в среде веб-тестирования.

Когда один из разработчиков начинает работать, он получает все (возможно, незавершенные) изменения.

Я думал о том, чтобы переключиться вживую на дополнительную ветку и просто объединить то, что изменилось, но из-за недостатка знаний о git я понятия не имею, как.

Моя идея такова:

  • Создайте новую ветку в прямом эфире (git branch live).
  • Каждый раз, когда что-то должно жить
    • Извлечение изменений в мастере (например: git checkout master; git pull; git checkout live)
    • git merge master

Проблема в том, что переключение на мастер или перетаскивание всего непосредственно в работающую систему может вызвать проблемы, поэтому я бы предпочел этого избежать.

Есть ли способ сделать это или есть лучший способ управлять системой Live (кроме обучения веб-игроков, чтобы они не толкали незаконченные вещи).

4 ответа4

17

Вы можете использовать git stash перед проверкой master и pull, а после проверки live снова используйте git stash pop (или, если ваш git старше, git stash apply и git stash clear при условии, что вы больше ничего не спрятали)

11

Я смог вытащить изменения из origin/master в master при работе в другой ветви с помощью этой команды:

git fetch origin master:master
4

Решите проблему в первую очередь. Они не должны подталкивать к филиалу, к которому они не имеют никакого бизнеса.

То, что вы спрашиваете, было бы что-то вроде

git checkout live
git pull origin master

Это попытается объединить удаленный мастер и вашу живую ветку.

0

Я рекомендую вам создать тестовое репозиторий git, чтобы каждый мог его принять. Все репо, включая ваш живой сайт, будут клонами тестового репо. Таким образом, любой может перейти к тестированию, не касаясь живого веб-сайта. Когда кому-то нужно обновить действующий сайт, вы можете извлечь его из репозитория git testing. Этот рабочий процесс довольно похож на SVN. Для дополнительной гибкости я рекомендую использовать ветку "live", которую вы описываете.

Подводя итог, все git-репо являются клоном тестового репо. Сайт живого производства также является клоном тестового репо. В качестве альтернативы, тестирование может быть клоном живой продукции, так что "толчок мерзавца" всегда движется к производству.

Другие варианты, в том числе добавление "живой" ветки к этой договоренности или "промежуточное" репо между тестированием и производством. Для дополнительной безопасности я рекомендую ограничить доступ к живому git-репо и заставить людей использовать защищенный сценарий, который позволяет работать в прямом эфире.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .