Щоб вибірково об'єднати файли з однієї гілки в іншу гілку, запустіть
git merge --no-ff --no-commit branchX
де branchXзнаходиться гілка, з якої ви хочете об'єднатись у поточну гілку.
Ця --no-commitопція зможе поетапно встановити файли, об'єднані Git, фактично не виконуючи їх. Це дасть вам можливість змінювати об'єднані файли, як тільки ви хочете, а потім виконувати їх самостійно.
Залежно від способу об'єднання файлів, є чотири випадки:
1) Ви хочете справжнього злиття.
У цьому випадку ви приймаєте об'єднані файли так, як Git автоматично їх об'єднав, а потім зв'язав.
2) Є деякі файли, які ви не хочете об’єднувати.
Наприклад, ви хочете зберегти версію в поточній гілці і проігнорувати версію в гілці, з якої ви з’єднуєтесь.
Щоб вибрати версію в поточній гілці, запустіть:
git checkout HEAD file1
Це отримає версію file1в поточній гілці і замінить автоматизований file1Git.
3) Якщо ви хочете, щоб версія в branchX (а не справжнє злиття).
Виконати:
git checkout branchX file1
Це отримає версію file1в branchXі замінить file1автоматичне об'єднання Git.
4) Останній випадок, якщо ви хочете вибрати лише конкретні злиття в file1.
У цьому випадку ви можете редагувати модифіковану file1безпосередньо, оновлювати її до того, на що хочете file1стати версією , а потім виконувати.
Якщо Git не зможе автоматично об'єднати файл, він повідомить про файл як " незаряджений " та створить копію, де потрібно буде вирішити конфлікти вручну.
Щоб пояснити далі на прикладі, скажімо, що ви хочете об'єднатись branchXу поточну гілку:
git merge --no-ff --no-commit branchX
Потім виконується git statusкоманда для перегляду стану модифікованих файлів.
Наприклад:
git status
# On branch master
# Changes to be committed:
#
# modified: file1
# modified: file2
# modified: file3
# Unmerged paths:
# (use "git add/rm <file>..." as appropriate to mark resolution)
#
# both modified: file4
#
Де file1, file2і file3чи файли git успішно об'єднані автоматично.
Що це означає, що зміни в masterі branchXдля всіх цих трьох файлів були об'єднані разом без будь - яких конфліктів.
Ви можете перевірити, як було зроблено об'єднання, запустивши git diff --cached;
git diff --cached file1
git diff --cached file2
git diff --cached file3
Якщо ви вважаєте, що якесь злиття є небажаним, ви можете
- редагуйте файл безпосередньо
- зберегти
git commit
Якщо ви не хочете об'єднатись file1і хочете зберегти версію в поточній галузі
Біжи
git checkout HEAD file1
Якщо ви не хочете об'єднатись file2і хочете лише версію вbranchX
Біжи
git checkout branchX file2
Якщо ви хочете file3бути об'єднані автоматично, нічого не робіть.
Git вже з’єднав його в цей момент.
file4вище - невдале злиття Git. Це означає, що в обох гілках відбуваються зміни, що відбуваються в одній лінії. Тут потрібно буде вирішити конфлікти вручну. Ви можете відмовитись від об'єднаного файлу, відредагувавши файл безпосередньо, або виконавши команду оформлення замовлення для версії, у якій ви хочете file4стати.
Нарешті, не забудьте git commit.