українська мова ▾ Topics ▾ Latest version ▾ git-merge-file last updated in 2.44.0

НАЗВА

git-merge-file - Виконати тристороннє об’єднання файлів

СИНОПСИС

git merge-file [-L <current-name> [-L <base-name> [-L <other-name>]]]
	[--ours|--theirs|--union] [-p|--stdout] [-q|--quiet] [--marker-size=<n>]
	[--[no-]diff3] [--object-id] <current> <base> <other>

ОПИС

Враховуючи три файли <current>, <base> та <other>, git merge-file об’єднує всі зміни, що ведуть від <base> до <other>, у <current>. Результат зазвичай поміщається у <current>. git merge-file корисний для об’єднання окремих змін до оригіналу. Припустимо, що <base> є оригіналом, а <current> та <other> є модифікаціями <base>, тоді git merge-file об’єднує обидві зміни.

Конфлікт виникає, якщо і <current>, і <other> мають зміни у спільному сегменті рядків. Якщо конфлікт виявлено, git merge-file зазвичай виводить попередження та бере конфлікт у дужки з рядками, що містять маркери <<<<<<< та >>>>>>>. Типовий конфлікт виглядатиме так:

<<<<<<< A
рядки у файлі A
=======
рядки у файлі B
>>>>>>> B

Якщо є конфлікти, користувач повинен відредагувати результат і видалити один з варіантів. Однак, коли активна опція --ours, --theirs або --union, ці конфлікти вирішуються на користь рядків з <current>, рядків з <other> або рядків з обох відповідно. Довжину маркерів конфлікту можна задати за допомогою опції --marker-size.

Якщо вказано --object-id, відбувається та сама поведінка, за винятком того, що замість того, щоб вказувати, що об’єднувати як файли, вказується список ідентифікаторів об’єктів, що посилаються на блоби.

Вихідне значення цієї програми є від’ємним у разі помилки, а кількість конфліктів – у протилежному випадку (скорочується до 127, якщо конфліктів більше). Якщо злиття було чистим, вихідне значення дорівнює 0.

«git merge-file» розроблено як мінімальний клон RCS «merge»; тобто він реалізує всю функціональність RCS «merge», яка потрібна для git[1].

ОПЦІЇ

--object-id

Вкажіть вміст для об’єднання як блоби у поточному репозиторії, а не як файли. У цьому випадку операція має виконуватися в межах дійсного репозиторію.

Якщо вказано опцію -p, об’єднаний файл (включно з конфліктами, якщо такі є) виводиться у стандартний вивід як завжди; в іншому випадку об’єднаний файл записується до сховища об’єктів, а ідентифікатор об’єкта його blob-об’єкта записується у стандартний вивід.

-L <label>

Цей параметр можна використовувати до трьох разів, і він визначає мітки, які будуть використовуватися замість відповідних імен файлів у звітах про конфлікти. Тобто, git merge-file -L x -L y -L z a b c генерує вивід, який виглядає так, ніби він походить з файлів x, y та z, а не з файлів a, b та c.

-p

Надсилати результати на стандартний вивід замість перезапису <current>.

-q

Тихі; не попереджають про конфлікти.

--diff3

Показувати конфлікти у стилі "diff3".

--zdiff3

Показувати конфлікти у стилі "zdiff3".

--ours
--theirs
--union

Замість того, щоб залишати конфлікти у файлі, вирішуйте їх на користь нашої (або їхньої, або обох) сторони.

--diff-algorithm={patience|minimal|histogram|myers}

Використовуйте інший алгоритм різниці під час об’єднання. Поточний алгоритм за замовчуванням — «myers», але вибір новішого алгоритму, такого як «histogram», може допомогти уникнути неправильного об’єднання, яке виникає через неважливі збіги рядків (наприклад, дужки з різних функцій). Див. також git-diff[1] --diff-algorithm.

ПРИКЛАДИ

git merge-file README.my README README.upstream

поєднує зміни README.my та README.upstream з моменту виходу README, намагається об’єднати їх та записує результат у README.my.

git merge-file -L a -L b -L c tmp/a123 tmp/b234 tmp/c345

merges tmp/a123 and tmp/c345 with the base tmp/b234, but uses labels a and c instead of tmp/a123 and tmp/c345.

git merge-file -p --object-id abc1234 def567 890abcd

об’єднує зміни блобу abc1234 та 890abcd з моменту def567, намагається об’єднати їх та записує результат у стандартний вивід

GIT

Частина набору git[1]