Если вы хотите знать, как сортировать связанный список, не используя стандартные библиотеки Java, я бы предложил посмотреть на различные алгоритмы самостоятельно. Примеры здесь показывают, как реализовать сортировку вставки, другое сообщение StackOverflow показывает сортировку слияния , а ehow даже дает некоторые примеры того, как создать пользовательская функция сравнения в случае, если вы хотите дополнительно настроить свой вид.
Let’s смотрят на пример. При работе над ответвлением, названным login
, на основе эти master
ответвление, один из членов команды продвинул некоторые изменения в master
. Вам нужны эти изменения для окончания login
функция в ответвлении.
рисунок 1. Новые фиксации в master
ответвление (E и F), необходимы для окончания работы в эти login
ответвление.
Слияние master
ответвление назад в Ваш привело бы к фиксации слияния, которая включает изменения между обоими ответвлениями и существует для показа, где слияние произошло.
рисунок 2. Слияние двух ответвлений приводит к фиксации слияния.
Мы won’t должен знать, когда мы объединились master
в эти login
ответвление в будущем. Вместо этого we’d нравится притворяться, что все фиксации на эти login
ответвление произошли на основе нового состояния эти master
ответвление.
переоснова Git’s команда временно перематывает фиксации на Вашем текущем ответвлении, получениях по запросу в фиксациях от другого ответвления и повторно применяет перемотанные фиксации назад на вершине. Путем переключения тока Это основывает текущее ответвление на другое ответвление.
рисунок 3. Перебазирование применяет фиксации от эти login
ответвление сверху эти master
ответвление.
источник здесь
Итак, когда вы используете какой-либо из них?
В дополнение к моему собственному ответу , упомянутому TSamper ,
, перебазировка довольно часто является хорошей идеей перед объединением, поскольку Идея заключается в том, что вы интегрируете в свою ветку Y
работу ветки B
, в которую вы будете сливаться.
Но опять же, перед объединением вы разрешаете любой конфликт в вашей ветви (то есть: «rebase», как в «воспроизвести мою работу в моей ветви, начиная с недавней точки из ветви B
)
Если все сделано правильно, последующее объединение из вашей ветви в ветку B
может быть ускоренным.
объединение влияет непосредственно на ветку назначения B
, что означает, что слияния лучше быть тривиальными в противном случае ветвь B
может долго возвращаться в устойчивое состояние (время для вас разрешить все конфликты)
точка слияния после ребазинга?
В случае, который я описываю, я перевожу B
на свою ветку, просто чтобы иметь возможность воспроизвести мою работу с более поздней точки из B
, но оставаясь в моя ветвь.
В этом случае слияние все еще необходимо, чтобы перенести мою «воспроизведенную» работу на B
.
Другой сценарий (, описанный, например, в Git Ready ), состоит в том, чтобы привести работать непосредственно в B
через ребазинг (который сохраняет все ваши хорошие коммиты или даже дает вам возможность переупорядочить их через интерактивный ребаз).
В этом случае (когда вы перебазируете, находясь в ветви B), вы правы: дальнейшее слияние не требуется:
Git-дерево по умолчанию, когда мы не слили и не перебазировали
, мы получаем перебазировкой:
Этот второй сценарий полностью посвящен тому, как вернуть новую функцию в мастер.
Моя точка зрения, описывая первый сценарий повторной проверки, состоит в том, чтобы напомнить всем, что повторная проверка также может использоваться в качестве предварительного шага к этому ( что значит «вернуть новую функцию в мастер»).
Вы можете использовать rebase, чтобы сначала ввести master "в" ветку новой функции: rebase будет воспроизводить коммиты новой функции от мастера HEAD
, но все еще в ветке новой функции, эффективно перемещая вашу ветку, начиная точка от старого мастера коммит до HEAD-master
.
Это позволяет вам разрешать любые конфликты в вашей ветви (то есть изолированно, в то же время позволяя мастеру продолжать развиваться параллельно, если этап разрешения конфликта занимает слишком много времени).
Затем вы можете переключиться на master и объединить new-feature
(или перебазировать new-feature
на master
, если вы хотите сохранить коммиты, сделанные в вашем new -feature
branch).
Итак:
master
.