Что такое ветка git theme?

137

Что такое ветка git theme? Чем-то отличается от обычной ветки? Есть ли ветки, которые не являются тематическими ветками?

skiphoppy
источник

Ответы:

114

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

Другой тип ветви - это «удаленная ветка» или «ветка удаленного отслеживания». Этот тип ветки следует за развитием чужой работы и хранится в вашем собственном хранилище. Вы периодически обновляете эту ветку (используя git fetch), чтобы отслеживать, что происходит в другом месте. Когда вы будете готовы отследить изменения всех остальных, вы будете использовать git pullкак выборку, так и слияние.

Я также видел другой вид веток, который представляет собой совершенно отдельное дерево файлов в том же хранилище. Например, сам Git-репозиторий содержит заголовки с именами man и html, которые содержат содержимое, совершенно отличное от главной ветви. Я не знаю, как обычно называются эти типы ветвей.

Грег Хьюгилл
источник
6
Я искал, как иметь две ветви без общего коммита предка и нашел это: madduck.net/blog/…
Николас
1
По сравнению с отдельным деревом, я думаю, что их иногда называют сиротскими ветвями, подобно тому, как Github рекомендует создавать страницу github вручную
максимум
1
Почему вы говорите, что ветка должна быть локальной? Нет оснований думать, что вы не захотите выдвигать ветку темы. И, аналогично, другие разработчики могут создавать свои собственные тематические ветки, и вы должны их потянуть. Этот ответ, кажется, сбивает с толку два совершенно не связанных между собой свойства веток: является ли ветвь локальной или нет, она вообще не связана с тем, является ли она ветвью темы.
Жан-Поль Кальдероне
@ Jean-PaulCalderone: я не думаю, что я говорил, что тематические ветки должны быть локальными. Конечно, вы можете удаленно отслеживать ветку темы, если над ней работает более одного разработчика.
Грег Хьюгилл
2
Я думаю, что ответ подразумевает это. Почему "... что вы создаете локально ..." и "... имеют имя, которое имеет значение для вас". неотъемлемая часть того, что составляет «тематическую ветку»? Первое предложение вашего ответа убедительно говорит о том, что это важные особенности ветки тем, но на самом деле они оба ортогональны «тематичности» ветки или нет. Следующий абзац, где вы описываете «удаленные ветви», вновь подтверждает идею о том, что «созданная локально» часть тематической ветви важна. Я предлагаю перефокусировать этот ответ, чтобы снять акцент с этих несвязанных черт отрасли.
Жан-Поль Кальдероне
81

Это не технический термин; это просто ссылка на ветку, которая была создана для реализации определенной функции или исправления ошибки. «Тема» является причиной создания филиала, по сути.

mipadi
источник
2
Ага. в отличие от личной ветки, где у вас есть ветки: bob, alice, mat и т. д.
webmat
... так ветка темы и ветка функции - это одно и то же, верно?
Бетлиста
@Betlista Более или менее, да.
Мипади
28

https://github.com/dchelimsky/rspec/wiki/Topic-Branches объясняет это хорошо:

Ветвь «тема» - это отдельная ветка, которую вы используете при работе над одной «темой» (исправление ошибки, новая функция или экспериментальная идея). Рекомендуется работать над веткой тем вместо непосредственно над «master», потому что:

{... перейти по ссылке ...}

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

Этот образец также дает примеры. Что на самом деле заставило меня задуматься, это, вероятно, то, что большинство магазинов уже делают. Все гибкие проекты, в которых я когда-либо участвовал. Я проголосовал за "это не технический термин", потому что я чувствую, что это ударяет гвоздь по голове.

Джефф Ансель
источник
4

похоже, что наиболее заметный и важный тип ветвей, которые не являются ветвями для тем, - это ветки релизов в главном общедоступном репозитории, верно?

Возможно, это правильно для вас, но это касается вас и проекта, о котором вы думаете; это не определяется Git.

Большинство систем контроля версий (особенно централизованных) предписывают или обеспечивают выполнение определенного рабочего процесса, включая то, для чего имеет смысл использовать ветвь. Git (и в некоторой степени большинство распределенных VCS) считают, что рабочий процесс, для чего используются ветви, когда для фиксации, для чего используются разные репозитории и т. Д., Выбирается пользователями и соглашениями между пользователями (политиками). Так что Git не применяет их технически.

Это одна из вещей, которая сделала Git трудным для меня, чтобы учиться. Оливер Стил объяснил это с точки зрения пользователя, написав о политиках фиксации .

Павел
источник