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.54.0
2026-04-20
- 2.44.1 → 2.53.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 <имя-текущего> [-L <имя-основы> [-L <имя-другого>]]] [--ours|--theirs|--union] [-p|--stdout] [-q|--quiet] [--marker-size=<число>] [--[no-]diff3] [--object-id] <текущий> <основа> <другой>
ОПИСАНИЕ
При наличии трёх файлов <текущий>, <основа> и <другой>, git merge-file включает все изменения, которые ведут от <основы> к <другому>, в <текущий>. Результат обычно помещается в <текущий>. git merge-file полезен для объединения отдельных изменений в оригинале. Предположим, <основа> — это оригинал, а <текущий> и <другой> — это модификации <основы>, тогда git merge-file объединяет оба изменения.
Конфликт возникает, если и <текущий>, и <другой> имеют изменения в общем сегменте строк. Если конфликт обнаружен, git merge-file обычно выводит предупреждение и заключает конфликт в строки, содержащие маркеры <<<<<<< и >>>>>>>. Типичный конфликт будет выглядеть так:
<<<<<<< A строки в файле A ======= строки в файле B >>>>>>> B
Если есть конфликты, пользователь должен отредактировать результат и удалить одну из альтернатив. Однако, когда действует параметр --ours, --theirs или --union, эти конфликты разрешаются в пользу строк из <текущего>, строк из <другого> или строк из обоих соответственно. Длину маркеров конфликта можно задать с помощью параметра --marker-size.
Если указан --object-id, происходит точно такое же поведение, за исключением того, что вместо указания того, что сливать, как файлы, оно указывается как список идентификаторов объектов, ссылающихся на blob-объекты.
Значение выхода этой программы отрицательно при ошибке и равно количеству конфликтов в противном случае (усекается до 127, если конфликтов больше). Если слияние было чистым, значение выхода равно 0.
git merge-file разработан как минимальный клон RCS merge; то есть он реализует всю функциональность RCS merge, которая необходима git[1].
ПАРАМЕТРЫ
- --object-id
-
Указывает содержимое для слияния как blob-объекты в текущем репозитории вместо файлов. В этом случае операция должна выполняться в допустимом репозитории.
Если указан параметр
-p, слитый файл (включая конфликты, если они есть) идёт в стандартный вывод как обычно; в противном случае слитый файл записывается в хранилище объектов, а идентификатор объекта его blob-объекта записывается в стандартный вывод. - -L <метка>
-
Этот параметр может быть указан до трёх раз и задаёт метки для использования вместо соответствующих имён файлов в отчётах о конфликтах. То есть
gitmerge-file-Lx-Ly-Lzabcгенерирует вывод, который выглядит так, как будто он получен из файлов x, y и z вместо файлов a, b и c. - -p
-
Отправлять результаты в стандартный вывод вместо перезаписи <текущего>.
- -q
-
Тихий режим; не предупреждать о конфликтах.
- --diff3
-
Показывать конфликты в стиле «diff3».
- --zdiff3
-
Показывать конфликты в стиле «zdiff3».
Параметры
--diff3и--zdiff3по умолчанию используют значение переменной конфигурацииmerge.conflictStyle(см. git-config[1]). - --ours
- --theirs
- --union
-
Вместо того чтобы оставлять конфликты в файле, разрешать конфликты в пользу нашей (или их, или обеих) стороны строк.
- --diff-algorithm={patience|minimal|histogram|myers}
-
Использовать другой алгоритм сравнения при слиянии. Текущий алгоритм по умолчанию — «myers», но выбор более позднего алгоритма, такого как «histogram», может помочь избежать неправильных слияний, возникающих из-за неважных совпадающих строк (например, скобок из разных функций). См. также git-diff[1]
--diff-algorithm.
ПРИМЕРЫ
-
gitmerge-fileREADME.myREADMEREADME.upstream -
объединяет изменения README.my и README.upstream начиная с README, пытается слить их и записывает результат в README.my.
-
gitmerge-file-La-Lb-Lctmp/a123tmp/b234tmp/c345 -
сливает tmp/a123 и tmp/c345 с основой tmp/b234, но использует метки
aиcвместоtmp/a123иtmp/c345. -
gitmerge-file-p--object-idabc1234def567890abcd -
объединяет изменения blob-объекта abc1234 и 890abcd начиная с def567, пытается слить их и записывает результат в стандартный вывод
GIT
Является частью пакета git[1]