Переключение, на которое указывает ветвь в Git - PullRequest
2 голосов
/ 21 апреля 2011

Мы ищем чистый способ использования git в нашем процессе веб-развертывания. То, что мы хотим сделать, это иметь возможность иметь ветку, называемую релизом, и, в основном, всякий раз, когда мы внедряем, она просто развертывает код из этой ветки. Это кажется достаточно простым, так как все, что нам нужно сделать, это объединить наше изменение с веткой релиза, а также создать другую ветвь (которая будет соответствовать ветке релиза в то время) для версии (так называемая ветвь 1.1.1). Вопрос в том, что мы можем сделать в случае необходимости отката. Скажем, у нас есть ветви 1.1.0 и 1.1.1. Мы выпускаем 1.1.2, и эти изменения объединяются в ветке релиза, и создается другая ветвь с именем 1.1.2. Нужно заметить ошибку Макора, которую необходимо использовать для отката до версии 1.1.1. Есть ли чистый способ просто указать точку ветвления релиза до 1.1.1

Кажется, что идеальное решение - это иметь какой-то способ иметь что-то (независимо от того, является ли это ветвью, тегом и т. Д.), К которому мы ничего не добавляем, мы просто используем это, чтобы указать на другую ветвь. Таким образом, когда выходит новая версия, мы создаем ветку для этой версии, которая просто указывает на выпуск этой ветки. Если нам нужно откатить, мы просто переключаем релиз, чтобы указать на последнюю известную рабочую ветку. Возможно ли что-то подобное?

Ответы [ 4 ]

1 голос
/ 21 апреля 2011

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

Это будет полностью независимо от ваших политик ветвления, которые будутв идеале иметь основную ветвь и отдельную версионную ветвь.

Используя git tag -f ..., вы можете перемещать тег по мере необходимости.

1 голос
/ 21 апреля 2011

Ветка в Git - это просто указатель на конкретную версию кода.Таким образом, вы можете иметь ветку release и передавать любую данную версию кода в эту ветку.Теперь Git обычно проверяет, что все, что вы добавляете в ветку, является потомком того, что уже есть в этой ветке, чтобы предотвратить случайную потерю истории.Но если вы используете ветку типа release, в которой вы хотите иметь возможность понизить рейтинг, вы можете переопределить ее, добавив + к refspec при нажатии.

Допустим, у вас есть тегиv1.1.1 и v1.1.2, и вы хотите понизить ваш выпуск до v1.1.1.Я также предполагаю, что ваше удаленное развертывание называется deploy, и у него есть ветвь с именем release, которая будет проверена в процессе развертывания.Вы можете просто написать:

git push deploy +v1.1.1:release
0 голосов
/ 21 апреля 2011

Использовать git-update-ref

git update-ref -m "new release" --no-deref releasebranch ref:origin/maint

Это также позволяет файлу "ref" быть символическим указателем на другой файл ref, начиная с последовательности заголовка из четырех байтов "ref: ".

0 голосов
/ 21 апреля 2011

Я бы отменил изменения как новый коммит (git revert) и назвал бы его "1.1.3".Это позволяет избежать путаницы, почему кто-то может путешествовать назад во времени:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...