Вот некоторые соглашения об именах веток, которые я использую, и их причины.
Соглашения об именах филиалов
- Используйте групповые токены (слова) в начале названия вашей ветви.
- Определите и используйте короткие токены, чтобы различать ветви таким образом, чтобы это имело смысл для вашего рабочего процесса.
- Используйте косую черту, чтобы отделить части имен вашей ветви.
- Не используйте голые числа в качестве ведущих частей.
- Избегайте длинных описательных имен для долгоживущих ветвей.
Групповые токены
Используйте жетоны группировки перед именами веток.
group1/foo
group2/foo
group1/bar
group2/bar
group3/bar
group1/baz
Группы могут быть названы так, как вам нравится, в соответствии с вашим рабочим процессом. Мне нравится использовать короткие существительные для моего. Продолжайте читать для большей ясности.
Короткие четко определенные токены
Выбирайте короткие токены, чтобы они не добавляли слишком много шума к каждому из названий вашей ветви. Я использую это:
wip Works in progress; stuff I know won't be finished soon
feat Feature I'm adding or expanding
bug Bug fix or experiment
junk Throwaway branch created to experiment
Каждый из этих токенов можно использовать, чтобы указать, к какой части вашего рабочего процесса относится каждая ветвь.
Похоже, у вас есть несколько ветвей для разных циклов изменений. Я не знаю, какие у вас циклы, но давайте предположим, что они «новые», «тестируемые» и «проверенные». Вы можете назвать свои ветви сокращенными версиями этих тегов, которые всегда пишутся одинаково, чтобы сгруппировать их и напомнить вам, на каком этапе вы находитесь.
new/frabnotz
new/foo
new/bar
test/foo
test/frabnotz
ver/foo
Вы можете быстро определить, какие ветви достигли каждой отдельной стадии, и вы можете легко сгруппировать их, используя параметры сопоставления с образцом в Git.
$ git branch --list "test/*"
test/foo
test/frabnotz
$ git branch --list "*/foo"
new/foo
test/foo
ver/foo
$ gitk --branches="*/foo"
Используйте косую черту для разделения частей
Вы можете использовать любой разделитель в именах веток, но я считаю, что косые черты наиболее гибкие. Вы можете предпочесть использовать тире или точки. Но косые черты позволяют вам переименовывать ветки при извлечении или извлечении на / с пульта.
$ git push origin 'refs/heads/feature/*:refs/heads/phord/feat/*'
$ git push origin 'refs/heads/bug/*:refs/heads/review/bugfix/*'
Для меня косые черты также работают лучше для расширения вкладки (завершение команды) в моей оболочке. Как я настроил, я могу искать ответвления с разными частями, печатая первые символы части и нажимая клавишу TAB. Затем Zsh дает мне список ветвей, которые соответствуют части набранного мной токена. Это работает как для предыдущих токенов, так и для встроенных.
$ git checkout new<TAB>
Menu: new/frabnotz new/foo new/bar
$ git checkout foo<TAB>
Menu: new/foo test/foo ver/foo
(Zshell очень настраивается для завершения команд, и я мог бы также настроить его для обработки штрихов, подчеркиваний или точек таким же образом. Но я предпочитаю этого не делать.)
Он также позволяет вам искать ветки во многих командах git, например:
git branch --list "feature/*"
git log --graph --oneline --decorate --branches="feature/*"
gitk --branches="feature/*"
Предостережение: как отмечает Слипп в комментариях, косые черты могут вызвать проблемы. Поскольку ветви реализованы как пути, вы не можете иметь ветку с именем "foo" и другую ветку с именем "foo / bar". Это может сбивать с толку новых пользователей.
Не используйте голые числа
Не используйте пустые числа (или шестнадцатеричные числа) как часть схемы именования филиалов. Внутри расширения табуляции ссылочного имени git может решить, что число является частью ша-1 вместо имени ветви. Например, мой трекер проблем называет ошибки с десятичными числами. Я называю мои родственные ветви CRnnnnn, а не просто nnnnn, чтобы избежать путаницы.
$ git checkout CR15032<TAB>
Menu: fix/CR15032 test/CR15032
Если бы я попытался расширить только 15032, git не был бы уверен, хочу ли я искать SHA-1 или имена ветвей, и мой выбор был бы несколько ограничен.
Избегайте длинных описательных имен
Длинные имена ветвей могут быть очень полезны, когда вы смотрите список ветвей. Но это может помешать при просмотре оформленных однострочных журналов, поскольку имена веток могут поглощать большую часть одной строки и сокращать видимую часть журнала.
С другой стороны, длинные имена ветвей могут быть более полезны при «фиксации слияний», если вы не переписываете их вручную. По умолчанию сообщение о слиянии Merge branch 'branch-name'
. Может оказаться более полезным, чтобы сообщения о слиянии отображались как Merge branch 'fix/CR15032/crash-when-unformatted-disk-inserted'
не просто Merge branch 'fix/CR15032'
.