Ця відповідь була переглянута, оскільки моє розуміння, діаграми та висновки були невірними.
git pull
викликає злиття, оскільки git зливається. Це можна змінити, встановивши ваші гілки використовувати ребазу замість злиття. Використання rebase замість злиття на тязі надає більш лінійну історію спільному сховищу. З іншого боку, комісії злиття показують паралельні зусилля з розвитку галузі.
Наприклад, двоє людей працюють в одній галузі. Відділення починається як:
...->C1
Перша людина закінчує свою роботу і підштовхується до гілки:
...->C1->C2
Друга людина закінчує свою роботу і хоче натиснути, але не може, тому що їм потрібно оновити. Локальне сховище для другої особи виглядає так:
...->C1->C3
Якщо витяг встановлений для злиття, сховище інших осіб виглядатиме так.
...->C1->C3->M1
\ /
->C2->
Де M1 - це об'єднання об'єднань. Ця нова галузева історія буде висунута до репо. Якщо замість цього, витяг встановлений для відновлення локального репо, виглядатиме так:
...->C1->C2->C3
Немає зобов'язань щодо злиття. Історія стала більш лінійною.
Обидва варіанти відображають історію галузі. git дозволяє вибрати, яку історію ви віддаєте перевагу.
Дійсно є місця, де повторна база даних може спричинити проблеми з віддаленими гілками. Це не один із таких випадків. Ми вважаємо за краще використовувати ребазу, оскільки вона спрощує і без того складну історію філії, а також показує версію історії відносно спільного сховища.
Ви можете встановити branch.autosetuprebase = завжди, щоб git автоматично встановлював віддалені гілки як rebase замість master.
git config --global branch.autosetuprebase always
Цей параметр змушує git автоматично створювати конфігураційні налаштування для кожної віддаленої гілки:
branch.<branchname>.rebase=true
Ви можете встановити це самостійно для віддалених гілок, які вже налаштовані.
git config branch.<branchname>.rebase true
Я хотів би подякувати @LaurensHolst за запитання та переслідування моїх попередніх заяв. Я, безумовно, дізнався більше про те, як git працює з функціями pull і merge.
Для отримання додаткової інформації про об'єднання з’єднань ви можете ознайомитись зі сприянням проекту в ProGit-Book . У розділі " Приватна мала команда " показано об'єднання об'єднань.
git log --no-merges