Setup and Config
Getting and Creating Projects
Basic Snapshotting
Branching and Merging
Sharing and Updating Projects
Inspection and Comparison
Patching
Debugging
External Systems
Server Admin
Guides
- gitattributes
- Command-line interface conventions
- Everyday Git
- Frequently Asked Questions (FAQ)
- Glossary
- Hooks
- gitignore
- gitmodules
- Revisions
- Submodules
- Tutorial
- Workflows
- All guides...
Administration
Plumbing Commands
- 2.44.1 → 2.51.0 no changes
-
2.44.0
2024-02-23
- 2.43.1 → 2.43.7 no changes
-
2.43.0
2023-11-20
- 2.35.1 → 2.42.4 no changes
-
2.35.0
2022-01-24
- 2.7.6 → 2.34.8 no changes
-
2.6.7
2017-05-05
- 2.1.4 → 2.5.6 no changes
-
2.0.5
2014-12-17
СИНОПСИС
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
andc
instead oftmp/a123
andtmp/c345
. -
git
merge-file
-p
--object-id
abc1234
def567
890abcd
-
об’єднує зміни блобу abc1234 та 890abcd з моменту def567, намагається об’єднати їх та записує результат у стандартний вивід
GIT
Частина набору git[1]