2015-09-01 2 views
3

Я пытаюсь понять, как управлять ветвями Git, поэтому у меня есть правильный и читаемый поток для моего процесса разработки.Управление ветвями и подобраниями Git?

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

Скажем, я бы мастер -> проект -> функция 1 -> 1 особенность к югу от 1 ...

Что я хотел бы получить в ртути будет выглядеть следующим образом:

http://i.stack.imgur.com/lAz5c.png

Что Я на самом деле попасть под мерзавец это:

http://i.stack.imgur.com/y6mmx.png

в основном, весь поток развития теряется, и в 1 уе ar не будет знать, что «рефакторинг интерфейса» был связан и подпункт «Дублирование скорости модели».

Кроме того, я избегаю быстрой перемотки вперед, потому что он просто потерял всю историю, но все же, через несколько месяцев даже я не смогу сказать, что «Обновить необходимый setExecutionMode» было выполнено под «InterfaceRefactoring» и а не «Дублирование ...»

Я серьезно подумываю о возврате к Hg и использовании плагина, чтобы сделать мост между Hg и Git, потому что Git настолько невероятно НЕ удобен для пользователя, но я также очень хочу использовать инструмент компании, поскольку он по-прежнему является современным и эффективным SCM (не похожим на SVN или CVS).

Я все еще думаю, что могу получить то, что хочу, я просто не понимаю, как это сделать.
Что я делаю неправильно?

+0

Я бы посоветовал на самом деле, глядя на ваш Git сеть Graph для более точного взгляда на как выглядит структура ветви. – JonE

+0

В git ветка - это просто указатель на фиксацию. Он не содержит информации об истории. Мне любопытно, как вы избегаете быстрых слияний. Выполняете ли вы дополнительные обязательства для обеспечения слияния? – GolfWolf

+0

Что такое график сети git? – Zangdar

ответ

1

У Git нет того, что Mercurial называет «названными ветвями». Вместо этого, что Git называет «ветки», очень похожи на то, что Mercurial называет bookmarks. Есть несколько отличий:

  • В Git, каждый руководитель должен иметь указатель филиала или считаются полом-несуществующим (а «отдельностоящая ГОЛОВА») и может быть мусором через некоторое время. Такие главы не будут отображаться в истории хранилища, но могут быть получены из reflog. Это контрастирует с Mercurial, где закладки полностью необязательны.
  • Git постоянно поддерживает «удаленные ветви», в то время как Mercurial делает это только тогда, когда локальные и удаленные закладки расходятся (вы получаете предупреждение «разного закладок» и в хранилище добавляется закладка с именем, например [email protected]). Это означает, что локальные ветви Git должны быть быстро перенаправлены вручную после вытягивания, тогда как Mercurial быстро перетаскивает локальные закладки автоматически при нажатии.
  • В Mercurial, @ - специальная закладка, которая может быть или не существовать. Если это так, клонирование проверяет его по умолчанию. Он может использоваться как указатель на соединительную линию (ветвь по умолчанию), хотя это не единственное ее использование. В Git @ является сокращением для текущего фиксации, а вместо этого «главная» ветвь называется master.

Если вам нужны ветки, похожие на Mercurial, вы должны использовать Mercurial вместо Git.

+0

Спасибо. Пожалуйста, не надо, если бы я мог использовать Mercurial, я определенно был бы :) – Zangdar

1

Меркуриальные ветви - это привязки к фиксации.Git совершает не имеют таких выделенных строк, но вы могли бы поставить ключевое слово к теме:

  • EDF скорость слияния дублирования
  • DSPEED материал
  • REFACTOR_INTERFACE материал

Некоторые поставить там ряд from bugtracker

+0

В общем, запросы функций и ошибки должны появляться в трекере ошибок в любом случае, поэтому размещение номера ошибки в большинстве сообщений о совершении является хорошей практикой, независимо от Git vs. Mercurial , – Kevin

0

Кроме того, поскольку вы в любом случае используете небыстрое слияние, можно запросить, какие коммиты внесли вклад в слияние с помощью команды

git log *mergehash*~1..*mergehash* 

этот диапазон запросы также могут быть различными интерфейсами, например gitk (в определении вида) и GitExtentions (в селекторе филиала)

Смежные вопросы