В git, почему нужно работать над веткой, а не над основной? - PullRequest
4 голосов
/ 06 апреля 2011

Я продолжаю читать о том, как всегда следует работать в ветке, отличной от основной.Как только я выполню работу, я объединю их.Почему это лучше, чем просто работать над основной веткой?

Единственное преимущество, которое я вижу на первый взгляд, состоит в том, что тогда есть несколько безопасный способ всегда знать, что такое «последняя известная рабочая версия»основная ветка.Это причина?

Ответы [ 3 ]

4 голосов
/ 06 апреля 2011

Основным преимуществом работы в ветке является то, что вы можете делать коммиты для изолированной функции, все еще имея возможность вносить исправления в master.Вы также можете сделать что-то вроде «сквоша» коммитов с rebase -i, если чувствуете, что несколько коммитов должны фактически отображаться как один коммит другим пользователям.

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

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

3 голосов
/ 06 апреля 2011

Вот один пример, который часто случается со мной:

Допустим, вы работаете над функцией, которая является обширной, поэтому она потребует много коммитов.Вы почти на полпути, так что код не стабилен, но все идет хорошо.

Теперь в рабочей версии кода обнаружена критическая ошибка (предположительно, ваша основная ветка).Если вы выполняли коммит против ветки master, как вы исправляете это и выталкиваете исправление, не выталкивая сломанный незаконченный код?

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

Мне достаточно сделать это самостоятельно, чтобы создать ветку в любое время, когда я работаю над чем-то.

1 голос
/ 06 апреля 2011

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

Как вы сказали, вы можете думать о мастере как о "последней известной рабочей версии", но вы также можете думать о ней как о "моей новейшей стабильной версии". Если это единственный, с которого вы публикуете, то вы знаете, что вы никогда не можете сделать с этим ничего сумасшедшего, но также и то, что вы можете делать эти сумасшедшие вещи с любой другой веткой. Вы можете свободно изменять коммиты, сдавливать их, перебрасывать ветки вокруг, все эти способы, которые Git предоставляет, чтобы исправить неизбежные упущения, которые мы делаем при разработке. И вам никогда не придется думать: «Хм, я уже продвинул эту работу?» - у вас нет, так как он еще не находится в вашей основной ветке. Вы также можете попробовать что-нибудь, программируя - взломать, совершить частично законченную работу, перемещаться между идеями, что угодно - и быть уверенным, что вы никогда не покажете это случайно кому-то еще, пока не скажете «Я закончил» и объединить его с мастером.

Ключевой частью здесь является понятие публикации вашей работы. Если бы это был ваш личный репозиторий, если бы вы поняли, что ваша основная ветка каким-то образом нарушена, это только доставит вам неудобства. Но как только другие люди будут вовлечены, вы тоже можете с ними связываться.

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