Я уже несколько месяцев использую локальный репозиторий git, взаимодействующий с репозиторием CVS моей группы. Я сделал почти невротичное количество ветвей, большинство из которых, к счастью, слились с моим стволом. Но наименование начинает становиться проблемой. Если у меня есть задача с легким именем простой меткой, но я выполняю ее в три этапа, каждый из которых включает свою собственную ветвь и ситуацию слияния, то я могу повторять имя ветви каждый раз, но это немного сбивает с толку историю. Если я получу более конкретные имена, с отдельным описанием для каждого этапа, тогда имена ветвей станут длинными и громоздкими.
Я узнал, просматривая старые темы, что я могу начать именовать ветки с / в названии, то есть с темой / задачей или чем-то в этом роде. Я могу начать делать это и посмотреть, поможет ли это лучше организовать вещи.
Каковы некоторые рекомендации для именования веток Git?
Изменить: Никто на самом деле не предложил никаких соглашений об именах. Я действительно удаляю ветки, когда закончу с ними. Просто у меня их несколько, потому что руководство постоянно корректирует мои приоритеты. :) В качестве примера того, почему мне может понадобиться более одной ветви в задаче, предположим, что мне нужно зафиксировать первый дискретный этап в задаче в хранилище CVS группы. В этот момент, из-за моего несовершенного взаимодействия с CVS, я выполнял этот коммит и затем убивал эту ветку. (Я видел слишком много странностей, взаимодействующих с CVS, если я попытаюсь продолжать использовать ту же ветку в тот момент.)
источник
KEY-1234/allow-users-to-do-smart-stuff
Ответы:
Вот некоторые соглашения об именах веток, которые я использую, и их причины.
Соглашения об именах филиалов
Групповые токены
Используйте жетоны группировки перед именами веток.
Группы могут быть названы так, как вам нравится, в соответствии с вашим рабочим процессом. Мне нравится использовать короткие существительные для моего. Продолжайте читать для большей ясности.
Короткие четко определенные токены
Выбирайте короткие токены, чтобы они не добавляли слишком много шума к каждому из названий вашей ветви. Я использую это:
Каждый из этих токенов можно использовать, чтобы указать, к какой части вашего рабочего процесса относится каждая ветвь.
Похоже, у вас есть несколько ветвей для разных циклов изменений. Я не знаю, какие у вас циклы, но давайте предположим, что они «новые», «тестируемые» и «проверенные». Вы можете назвать свои ветви сокращенными версиями этих тегов, которые всегда пишутся одинаково, чтобы сгруппировать их и напомнить вам, на каком этапе вы находитесь.
Вы можете быстро определить, какие ветви достигли каждой отдельной стадии, и вы можете легко сгруппировать их, используя параметры сопоставления с образцом в Git.
Используйте косую черту для разделения частей
Вы можете использовать любой разделитель в именах веток, но я считаю, что косые черты наиболее гибкие. Вы можете предпочесть использовать тире или точки. Но косые черты позволяют вам переименовывать ветки при извлечении или извлечении на / с пульта.
Для меня косые черты также работают лучше для расширения вкладки (завершение команды) в моей оболочке. Как я настроил, я могу искать ответвления с разными частями, печатая первые символы части и нажимая клавишу TAB. Затем Zsh дает мне список ветвей, которые соответствуют части набранного мной токена. Это работает как для предыдущих токенов, так и для встроенных.
(Zshell очень настраивается для завершения команд, и я мог бы также настроить его для обработки штрихов, подчеркиваний или точек таким же образом. Но я предпочитаю этого не делать.)
Он также позволяет вам искать ветки во многих командах git, например:
Предостережение: как отмечает Слипп в комментариях, косые черты могут вызвать проблемы. Поскольку ветви реализованы как пути, вы не можете иметь ветку с именем "foo" и другую ветку с именем "foo / bar". Это может сбивать с толку новых пользователей.
Не используйте голые числа
Не используйте пустые числа (или шестнадцатеричные числа) как часть схемы именования филиалов. Внутри расширения табуляции ссылочного имени git может решить, что число является частью ша-1 вместо имени ветви. Например, мой трекер проблем называет ошибки с десятичными числами. Я называю мои родственные ветви CRnnnnn, а не просто nnnnn, чтобы избежать путаницы.
Если бы я попытался расширить только 15032, git не был бы уверен, хочу ли я искать SHA-1 или имена ветвей, и мой выбор был бы несколько ограничен.
Избегайте длинных описательных имен
Длинные имена ветвей могут быть очень полезны, когда вы смотрите список ветвей. Но это может помешать при просмотре оформленных однострочных журналов, поскольку имена веток могут поглощать большую часть одной строки и сокращать видимую часть журнала.
С другой стороны, длинные имена ветвей могут быть более полезны при «фиксации слияний», если вы не переписываете их вручную. По умолчанию сообщение о слиянии
Merge branch 'branch-name'
. Может оказаться более полезным, чтобы сообщения о слиянии отображались какMerge branch 'fix/CR15032/crash-when-unformatted-disk-inserted'
не простоMerge branch 'fix/CR15032'
.источник
bug/20574/frabnotz-finder
и,bug/20424
является то, что как только вы начнете без вложенного токена, вы не сможете добавить его позже и наоборот. Например: если вы создаетеbug/20424
ветку, вы не сможете создатьbug/20424/additional-fixing
ветку позже (если не удалитеbug/20424
ветку). Аналогично, еслиbug/20574/frabnotz-finder
это уже ветка, вы не можете создатьbug/20574
ветку. Я склонен либо использовать разделитель без суб-токена в подобных случаях (напримерbug/20574_frabnotz-finder
), либо выбрать имя по умолчанию для суб-токена (напримерbug/20424/main
).feature
группу иbug
группа, расширяемая , чтобы показатьfoo
,bar
тег для бывших и20574
,20592
групп и20424
,21334
тегов для последнего.git branch -a
получениеremotes/origin/master
, получение и т. Д. Когда я вижу, что git расскажет мне о ветке, я не использую косую черту, и поэтому, когда я ее вижу, я знаю, что это «особая» ссылка.У успешной модели ветвления Git Винсента Дриссена есть хорошие предложения. Картинка ниже. Если вам подходит эта модель ветвления, рассмотрите расширение потока для git . Другие прокомментировали поток
Модель Дриссена включает в себя
Основная ветка, используемая только для выпуска. Типичное имя
master
."Развивающийся" филиал этого филиала. Это тот, который используется для большинства основных работ. Обычно называется
develop
.Многофункциональные ветви развивающейся ветви. Имя основано на названии функции. Они будут объединены в развитие, а не в основную ветку или ветки выпуска.
Релиз ветки для хранения кандидатских релизов, только с исправлениями ошибок и без новых функций. Типичное имя
rc1.1
.Исправления - это кратковременные ветви для изменений, которые приходят от мастера и будут переходить в мастер без участия ветки разработки.
источник
Мое личное предпочтение - удалить название ветки после того, как я закончу с веткой темы.
Вместо того, чтобы пытаться использовать имя ветви для объяснения значения ветви, я начинаю строку темы сообщения о коммите в первом коммите этой ветви с «Branch:» и включаю дополнительные объяснения в текст сообщения, если тема не дает мне достаточно места.
Имя ветки, которое я использую, является просто ручкой для ссылки на ветку темы во время работы над ней. Когда работа над веткой темы завершена, я избавляюсь от названия ветки, иногда помечая коммит для дальнейшего использования.
Это также делает вывод
git branch
более полезным: в нем перечислены только долгоживущие ветки и активные ветки тем, а не все ветки.источник
Я смешивал и сопоставлял по разным схемам, которые я видел, и основываясь на инструментах, которые я использую.
Таким образом, мое законченное имя ветви будет:
что бы перевести на:
Части разделены прямой косой чертой, потому что они интерпретируются как папки в SourceTree для упрощения организации. Мы используем Jira для отслеживания проблем, поэтому включение номера облегчает поиск в системе. Включение этого числа также делает его доступным для поиска при попытке найти эту проблему внутри Github при попытке отправить запрос на извлечение.
источник
name/feature/issue-tracker-number-short-description
Почему для каждой задачи требуется три ветви / слияния? Можете ли вы объяснить больше об этом?
Если вы используете систему отслеживания ошибок, вы можете использовать номер ошибки как часть названия ветви. Это позволит сохранить уникальные имена веток, и вы можете добавить к ним префикс коротким и описательным словом или двумя, чтобы они были удобочитаемыми, например
"ResizeWindow-43523"
. Это также помогает упростить процесс очистки веток, поскольку вы можете найти соответствующую ошибку. Вот как я обычно называю свои ветви.Поскольку эти ветви в конечном итоге объединяются в master, вы должны безопасно удалить их после объединения. Если вы не объединяетесь
--squash
, вся история отрасли будет существовать, если она вам когда-нибудь понадобится.источник
Обратите внимание: как показано в commit e703d7 или commit b6c2a0d (март 2014 г.), который теперь является частью Git 2.0, вы найдете другое соглашение об именах (которое вы можете применить к веткам).
Имя ветви не может содержать пробел (см. « Какие символы недопустимы в имени ветви? » И
git check-ref-format
справочную страницу ).Поэтому для каждого имени ветви, которое будет представлено выражением из нескольких слов, использование '
-
' (тире) в качестве разделителя является хорошей идеей.источник
Следуя предложению farktronix, мы использовали номера билетов Jira для похожих в mercurial, и я планирую продолжать использовать их для веток git. Но я думаю, что сам номер билета, вероятно, достаточно уникален. Хотя было бы полезно иметь в названии ветки описательное слово, как заметил farktronix, если вы переключаетесь между ветвями достаточно часто, вы, вероятно, хотите меньше печатать. Затем, если вам нужно знать название филиала, поищите в Jira связанные ключевые слова в заявке, если вы не знаете его. Кроме того, вы должны включить номер билета в каждом комментарии.
Если ваша ветвь представляет версию, кажется, что общепринятым условием является использование формата xxx (пример: "1.0.0") для имен ветвей и vx.xx (пример "v1.0.0") для имен тегов (чтобы избежать конфликта) , См. Также: есть ли там стандартное соглашение об именах для git-тегов
источник
v1.2.4
ветвь в конечном итоге приводила к конечной точке сv1.2.4
тегом (правильно ли я полагаю, что в такой ситуации вы одновременно называете ветви и теги после версии) , то имеет ли это значение? Тэг все еще может быть достигнут в точке,refs/tags/v1.2.4
а ветвь - вrefs/heads/v1.2.4
, и кажется, что Git предпочтет имя тэга, когда оно неоднозначно (с предупреждением).