Разумно ли использовать ветвление в git-проекте с одним человеком? - PullRequest
16 голосов
/ 15 ноября 2009

У меня есть небольшой проект на git, над которым я являюсь единственным разработчиком. Пока что я использовал только одну основную ветку, чтобы заставить ее работать.

Сейчас проект как-то работает, и я хотел бы просто реализовать некоторые новые функции. Вопрос заключается в том, должен ли я создавать новую ветвь для каждой новой функции и впоследствии объединять ее?

Дело в том, что мой рабочий процесс будет просто улучшать «функциональную ветвь» и в большинстве случаев сливать ее обратно в неизмененную «главную ветвь», так что имеет ли смысл вообще создавать новые ветви?

Ответы [ 8 ]

19 голосов
/ 15 ноября 2009

Из справочной страницы gitworkflows:

Любая нетривиальная функция потребует несколько патчей для реализации, и может получить дополнительные исправления или улучшения в течение своей жизни.

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

Использование "веток темы" решает эти проблемы.

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

В дополнение к причинам, указанным выше, я бы добавил:

  • Если у вас есть функция, выполнение которой занимает много времени, работа над веткой функций позволяет вам легко приостановить работу над этой функцией, чтобы работать над чем-то другим.
  • Если есть вероятность, что вам нужно поддерживать несколько версий вашего кода (т.е. ваша текущая версия v2.0, но клиент / пользователь использует v1.0, то использование веток темы позволяет вам легко объединять исправления ошибок в несколько версий.
8 голосов
/ 15 ноября 2009

я должен создать новую ветку для каждого новая функция и слияние ее обратно потом?

Да, потому что на полпути к реализации этой функции вы обнаружите в производственном коде ошибку остановки показа, и вы будете благодарны, что можете git checkout master вернуться к работающему коду и исправить его. Мое правило - всегда держать основную ветвь в развертываемом состоянии.

3 голосов
/ 15 ноября 2009

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

2 голосов
/ 17 ноября 2009

В дополнение к тому, что говорили другие: ветки так легко создавать и поддерживать в git, почему бы не создать ветку? Даже если вам никогда не нужно вносить исправления / обновления в старую ветку, у вас все равно останутся дополнительные метаданные о вашей кодовой базе через ветки, которые вы будете рады получить через год.

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

2 голосов
/ 16 ноября 2009

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

Причина - рабочий процесс. Если вы используете единый рабочий процесс, который вы можете применять ко всем проектам, в которых вы участвуете, то каждый раз будет меньше ошибаться и меньше будет думать о решениях. Это также облегчает жизнь, если ваш «тривиальный» проект внезапно обретает собственную жизнь: -).

(Один рабочий процесс, конечно, идеал, но все, что помогает ...)

2 голосов
/ 15 ноября 2009

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

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

0 голосов
/ 15 ноября 2009

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

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

0 голосов
/ 15 ноября 2009

Практическое правило: если вы сломаете продукт во время разработки, ответвление. Предположим, вы нашли ошибку в багажнике и хотите ее исправить.

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