Какой самый идиоматичный способ реализовать «плавающий тег» в Git? - PullRequest
3 голосов
/ 27 ноября 2011

Я держу свой сайт в Git-хранилище. Это всего лишь небольшой персональный сайт, поэтому здесь нет никакой изощренной автоматизации; Я внесу кучу изменений, а затем периодически отправляю сайт на сервер, используя jekyll-s3 . Мне нравится следить за тем, какие ревизии были загружены, а какие нет, и сейчас у меня есть ветка с именем pushed, в которую я сливаю master каждый раз, когда загружаю на сервер. (Если задействованы какие-либо другие ветви, я объединяю все в master перед нажатием, так что только master когда-либо объединяется в pushed.)

Это работает достаточно хорошо, но мне кажется странным использовать «целую» ветвь, когда все, что меня волнует, - помечать один коммит за раз как «это было передано». (Да, я знаю, что в Git ветки считаются очень легкими.) С точки зрения терминологии мне кажется, что я хочу «отмечать» последний коммит каждый раз, когда я загружаю его на сервер, за исключением того, что в Git тег должен быть неизменная ссылка на один конкретный коммит. Сохранение ветки с именем pushed - самый идиоматичный способ сделать то, что я пытаюсь сделать, или есть лучший способ?

Ответы [ 3 ]

4 голосов
/ 27 ноября 2011

Если я правильно понял, вы хотите иметь ссылку на ваше последнее обновление на сайте, верно?Ну, на самом деле, ветвление - это то, что они делают, но не с тем, что вы сделали.

Как вы, возможно, знаете, существует два основных способа разработки с системами контроля версий:

  • master является отраслью разработки.В этом случае стабильными выпусками являются определенные теги.
  • master - это стабильная ветвь.В этом случае у вас есть другие ветви для разработки.Если вы хотите добавить свою функцию в master, вы объединяете master с собственной веткой и тестируете ее.Если это сработало, вы объединяете результаты с master и отправляете их на свой веб-сайт.

На самом деле вы говорите о втором методе, где у вас есть стабильная ветвь с именем pushedи вы сохраняете его стабильным (загруженным, работающим, независимо от того, какое свойство вы хотите) всегда.

Итак, то, что вы делаете, уже существует, хотя и более идиоматически, они сохраняют master в качестве этой стабильной ветви, а не какой-тодругая ветвь (например, с именем pushed).Это та же самая концепция.

Редактировать: Я хочу сказать, что всякий раз, когда вы хотите загрузить свои изменения на свой сайт, объедините все, что у вас есть в master (или pushed если хотите), а затем загрузите его.Таким образом, последняя фиксация master (или pushed) является последней загрузкой сайта.

3 голосов
/ 27 ноября 2011

Теги в Git представлены в двух вариантах: «легкий» и «аннотированный». Облегченный тег очень похож на заголовок ветви, это просто имя, которое указывает на конкретный коммит и ничего более. Изменить идентификатор фиксации, на который указывает облегченный тег, очень просто.

Аннотированный тег имеет собственный идентификатор sha1, метку времени, коммиттер, описание, необязательно подпись, а также указывает на конкретный коммит. Я думаю, что это тот тип тега, на который вы ссылаетесь, когда говорите «предполагается, что это неизменяемая ссылка».

1 голос
/ 27 ноября 2011

Вы можете использовать git tag -f tagName.

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

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