українська мова ▾ Topics ▾ Latest version ▾ git-merge-file last updated in 2.54.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".

Параметри --diff3 та --zdiff3 зазвичай мають значення, задане змінною конфігурації merge.conflictStyle (див. git-config[1]).

--ours
--theirs
--union

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

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

Використовуйте інший алгоритм diff під час обʼєднання. Поточний алгоритм зазвичай — «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

обʼєднує tmp/a123 і tmp/c345 з базовим tmp/b234, але використовує мітки a і c замість tmp/a123 і tmp/c345.

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

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

GIT

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