Git - це система управління розподіленою версією - інструмент для відстеження змін, внесених до набору файлів, або координації роботи з часом. Його часто використовують програмісти для координації змін у вихідному коді програмного забезпечення та найкращої частини; з його допомогою можна взагалі відстежувати будь-який вміст. Він спеціально розроблений для максимальної швидкості та ефективності для управління всіма проектами від невеликих до великих об'ємів. Це надзвичайно гнучко, тобто люди можуть ділитися роботою безпосередньо між своїми персональними сховищами, а групи можуть координувати свій робочий процес через центральне сховище. Він просто дозволяє двом розробникам, які сидять у двох різних місцях, самостійно вносити та записувати зміни, все без центрального сховища.
Об'єднання - це звичайна практика Git, яка використовується для інтеграції змін від однієї гілки до іншої. Git merge - це команда, яка здійснює зміни до іншого місця розташування. Це дозволяє розробникам приймати самостійні рядки коду, створені гілкою Git, та інтегрувати їх в єдину гілку. Це лише змінює цільову гілку, поки історія вихідної гілки залишається. Git rebase - це ще одна команда, яка використовується в основному з тією ж метою, за винятком того, що вона робить це зовсім інакше. Вони обидва роблять одне і те ж - включають в себе зобов’язання з однієї гілки в іншу, але різниця полягає в тому, як вони це роблять. Ми виділимо кілька ключових відмінних моментів, порівнюючи ці два.
Git merge - це команда, яка об'єднує дві або більше гілок історії фіксації. Злиття часто об'єднує лише дві гілки, хоча Git підтримує об'єднання трьох, чотирьох і більше гілок одночасно. Git merge використовується Git pull для включення змін з однієї гілки в іншу або з іншого сховища взагалі. Об'єднання повинно відбуватися в одному сховищі, тобто всі гілки, які потребують об'єднання, повинні бути присутніми в одному сховищі. Ситуації злиття зазвичай є результатом двох або більше користувачів, які намагаються оновити загальний код. Найчастіше користувач об'єднує гілку в іншу гілку свого локального сховища в локальному середовищі. Git merge спеціально інтегрує вміст вихідної гілки з цільовою гілкою. Цільова гілка змінюється, а вихідна гілка залишається.
Редакція Git - це ще одна альтернатива злиття, що використовується для інтеграції іншої гілки з гілкою, де ви зараз працюєте, за винятком того, що вона зберігає лінійну історію комісій. Мета Git Rebase - переміщення гілки з одного місця в інше. Оскільки коміти незмінні, їх не можна переміщувати, тому це тягне за собою створення нових комітетів з тими ж наборами змін і метаданих. Реферал принципово змінює уявлення про те, коли і де була розроблена послідовність комітетів, що призводить до втрати деяких аспектів історії розвитку. Це означає, що первісна комісія, на якій спочатку базувалася розробка, буде змінена. Він ефективно включає всі нові зобов’язання у головній галузі шляхом переписування історії. Як результат, вона створює нові коміти для кожного комітету в початковій галузі.
- Хоча як злиття, так і повторна база є найпоширенішими способами інтеграції змін у Git, і вони служать одній і тій же цілі - об'єднати кілька гілок в одну - різниця полягає в тому, як вони цього досягають. Git merge інтегрує вміст вихідної гілки з цільовою гілкою, зберігаючи походження кожної історії фіксування, тоді як реплікація Git включає всі нові комісії у головній гілці шляхом переписування історії шляхом створення нових комітетів для кожного коміту в гілці джерела.
- За допомогою Git merge ви спочатку переходите на гілку для об'єднання, а потім використовуєте команду merge для вибору гілки для злиття. Враховуючи, що гілка вказує на коміт і що коміт - це деталізація, з якою ви асоціюєте зміни, злиття команда зливається на рівні гілки чи фіксації. З іншого боку, база даних дещо інша. Спочатку вибираєте гілку для повторної бази, а потім використовуєте команду rebase, щоб вибрати, де її розмістити.
- Об'єднання створює новий комітет, який представляє злиття між двома гілками. Він об'єднує зміни від різних паралельних ліній розвитку (галузей) разом, створюючи комісію злиття. Мета - об'єднати дві або більше гілок разом, включаючи всі зміни з моменту розбіжності в поточну гілку. Перемотка вперед - це поведінка злиття за замовчуванням у Git. З іншого боку, звільняючи, змінюйте індивідуальні зобов’язання, переписуючи історію проектів, створюючи нові коміти для кожного комітету в оригінальній гілці, що, в свою чергу, призводить до лінійної історії без розбіжних гілок.
- Злиття Git не змінює історію, зберігаючи контекст гілки, тобто існуючі гілки жодним чином не змінюються. Це створює новий комітет (якщо тільки це не було швидким злиттям вперед), але комісії залишаються доступними у відділенні. Редакція Git, з іншого боку, впорядковує потенційно складну історію. Коміти переписуються, старі версії забуваються, і DAG редагувань змінюється. Коміти більше не доступні з використанням бази даних, тобто ви більше не можете перезавантажувати опубліковані гілки.
Ну, у двох словах, і злиття, і повторне базування - це два способи інтеграції змін у Git, але вони відрізняються тим, як це роблять. Об'єднання - це одноетапна операція з одним місцем для вирішення конфліктів, і зобов’язання, які були доступні у відділенні, залишаються доступними. Rebase, з іншого боку, повторно реалізує кожну команду окремо, переписуючи історію, створюючи нові коміти для кожного комітету у відділенні джерела. Отже, те, що колись було досяжне, вже не досяжне. Ребазація принципово змінює уявлення про те, коли і де була розроблена послідовність комітетів.