Перше, що я хочу зрозуміти, - це те, що назви гілок є лише псевдонімом певного комітету. фіксація - це те, що git спрацьовує, коли ви тягнете, натискаєте на злиття тощо. Кожна комісія має унікальний ідентифікатор.
Коли ви робите $ git злиття, то, що насправді відбувається, це git намагається перемотати вашу поточну гілку до фіксації, на яку посилається гілка (іншими словами, обидва назви гілок вказують на одну і ту ж фіксацію.) Цей сценарій є найпростішим для git для вирішення, оскільки немає нових зобов'язань. Подумайте, як майстер стрибне на ліліпад, на якому ваша гілка охолоджується. Можна встановити прапор --no-ff, і в цьому випадку git створить новий комітет незалежно від того, чи були кодові конфлікти.
У ситуації, коли між двома гілками, які ви намагаєтеся об'єднати, є кодові конфлікти (як правило, дві гілки, чия історія фіксування має спільну передачу у минулому), швидкий перемотка вперед не працює. git, можливо, все ще зможе автоматично об'єднати файли, доки обидві гілки в конфліктному файлі не були змінені однією і тією ж лінією. у такому випадку git об'єднає конфліктуючі для вас файли та автоматично їх заповнить. Ви можете попередньо переглянути, як це робилося, виконавши $ git diff - cached. Або ви можете передати прапор --no-commit у команду злиття, яка залишить модифіковані файли у вашому індексі, які вам потрібно буде додати та ввести. Але ви можете $ git diff цих файлів переглянути, що злиття зміниться.
Третій сценарій - це коли конфлікти git не можуть автоматично вирішити. У цьому випадку вам потрібно буде вручну об'єднати їх. На мою думку, це найпростіше зробити з злиттям, як, наприклад, араксис злиття або p4merge (безкоштовно). У будь-якому випадку, ви повинні робити кожен файл по одному. Якщо злиття колись здається застрялим, використовуйте $ git merge - продовжуйте, щоб перемістити його. Git повинен сказати, якщо він не може продовжуватись, а якщо так, чому ні. Якщо ви відчуваєте, що в якийсь момент ви втратили злиття, ви можете зробити $ git merge --abort, і будь-яке злиття скасується, і ви можете почати спочатку. Коли ви закінчите, кожен файл, який ви об’єднали, буде модифікованим файлом, який потрібно додати та ввести. Ви можете перевірити, де знаходяться файли зі статусом $ git. Якщо ви ще не зробили об'єднані файли. Вам потрібно зробити це для завершення злиття.
git commit gf2n.cpp -m "Hand merge gf2n.cpp due to conflicts"
, це призведе доfatal: cannot do a partial commit during a merge.
. І звичайно, "Часткові домовленості" не можуть бути задокументовані або обговорені ніде на сторінках git man. Виконанняgit merge
після виправлення призводить доPlease, commit your changes before you can merge.
того, що зламаний інструмент для дупи ...