Один простой пример - git может автоматически конвертировать слияние в «ускоренную перемотку вперед». Например, допустим, у меня есть ветка, которая выглядит так:
Мастер:
A ---> B ---> C
И я создаю ветку объектов на основе Master с новыми коммитами D и E.
Характеристика:
A --- > B ---> C
\
D ---> E
В svn, когда вы объединяете ветвь функций обратно в master, вы должны создать совершенно новый коммит, который применяет изменения D и E в Master. Итак, это выглядит так:
Master:
A ---> B ---> C -----------------> F
Feature: \ /
---> D ---> E -->
В git у нас есть выбор, как включить функцию ветвления в master. Если мы сделаем
git rebase feature
git автоматически распознает, что это тривиальное слияние, и выполнит ускоренное слияние, которое добавит новые коммиты в основную ветвь. Результат перебазирования:
Мастер:
A ---> B ---> C ---> D ---> E
Голова Мастера и Особенность указывают на коммит E (другими словами, они выглядят совершенно одинаково). Быстрое слияние аналогично тому, что происходит при обновлении в SVN.
Кроме того, у вас есть возможность заставить git создать коммит слияния. Если вместо этого мы делаем:
git merge feature
git создаст коммит слияния. Результат слияния:
Master:
A ---> B ---> C -----------------> F
Feature: \ /
---> D ---> E -->
Commit F - это комбинация D и E.