| GIT-MERGE-FILE(1) | Git Manual | GIT-MERGE-FILE(1) |
نام (NAME)
git-merge-file - اجرای یک ادغام سهطرفه روی فایلها
خلاصه دستور (SYNOPSIS)
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>
توضیحات (DESCRIPTION)
با داشتن سه فایل <current>، <base> و <other>، دستور git merge-file تمام تغییراتی را که از <base> به <other> منتهی شدهاند، در <current> اعمال میکند. نتیجه به طور معمول در <current> ذخیره میشود. دستور git merge-file برای ترکیب تغییرات جداگانه روی یک نسخه اصلی مفید است. فرض کنید <base> نسخه اصلی است و هر دو فایل <current> و <other> تغییراتی روی <base> هستند؛ در این حالت git merge-file هر دو دسته تغییرات را با یکدیگر ترکیب میکند.
اگر هر دو فایل <current> و <other> در بخش مشترکی از خطوط دارای تغییر باشند، یک تداخل (conflict) رخ میدهد. در صورت یافتن تداخل، git merge-file معمولاً یک هشدار چاپ میکند و تداخل را میان خطوطی شامل نشانگرهای <<<<<<< و >>>>>>> محصور مینماید. یک تداخل معمولی شبیه به این خواهد بود:
<<<<<<< A lines in file A ======= lines in file B >>>>>>> B
در صورت وجود تداخل، کاربر باید نتیجه را ویرایش کرده و یکی از گزینهها را حذف کند. با این حال، زمانی که گزینهٔ --ours، --theirs یا --union فعال باشد، این تداخلها به ترتیب به نفع خطوط <current>، خطوط <other> یا خطوط هر دو فایل حل میشوند. طول نشانگرهای تداخل را میتوان با گزینهٔ --marker-size مشخص کرد.
اگر --object-id مشخص شود، دقیقاً همان رفتار رخ میدهد، با این تفاوت که به جای مشخص کردن مواردی که باید به عنوان فایل ادغام شوند، آنها به عنوان فهرستی از شناسههای شیء (object IDs) که به blobها اشاره دارند مشخص میشوند.
مقدار خروج (exit value) این برنامه در صورت بروز خطا منفی است، و در غیر این صورت برابر با تعداد تداخلها خواهد بود (اگر تعداد تداخلها بیشتر از این مقدار باشد، به ۱۲۷ محدود میشود). اگر ادغام بدون تداخل انجام شود، مقدار خروج ۰ است.
دستور git merge-file طوری طراحی شده است که یک همتای کمینه از merge در RCS باشد؛ یعنی تمام قابلیتهای merge در RCS را که توسط git(1) مورد نیاز است پیادهسازی میکند.
گزینهها (OPTIONS)
--object-id
اگر گزینهٔ -p مشخص شده باشد، فایل ادغامشده (از جمله تداخلها، در صورت وجود) مانند حالت عادی به خروجی استاندارد ارسال میشود؛ در غیر این صورت، فایل ادغامشده در مخزن اشیاء (object store) نوشته شده و شناسه شیء (object ID) مربوط به blob آن در خروجی استاندارد نوشته میشود.
-L <label>
-p
-q
--diff3
--zdiff3
مقدار پیشفرض گزینههای --diff3 و --zdiff3 از متغیر پیکربندی merge.conflictStyle گرفته میشود (نگاه کنید به git-config(1)).
--ours, --theirs, --union
--diff-algorithm={patience|minimal|histogram|myers}
مثالها (EXAMPLES)
git merge-file README.my README README.upstream
git merge-file -L a -L b -L c tmp/a123 tmp/b234 tmp/c345
git merge-file -p --object-id abc1234 def567 890abcd
گیت (GIT)
بخشی از مجموعهٔ git(1)
| 2026-06-29 | Git 2.55.0 |