| GIT-MERGETOOL(1) | راهنمای Git | GIT-MERGETOOL(1) |
نام (NAME)
git-mergetool - اجرای ابزارهای حل تعارض برای برطرف کردن تعارضات ادغام
خلاصه دستور (SYNOPSIS)
git mergetool [--tool=<tool>] [-y | --[no-]prompt] [<file>...]
توضیحات (DESCRIPTION)
از git mergetool برای اجرای یکی از چند ابزار کمکی ادغام جهت حل تعارضات ادغام استفاده کنید. این دستور معمولاً پس از git merge اجرا میشود.
اگر یک یا چند پارامتر <file> مشخص شده باشد، برنامه ابزار ادغام برای حل اختلافات در هر فایل اجرا خواهد شد (فایلهای بدون تعارض نادیده گرفته میشوند). مشخص کردن یک دایرکتوری، تمامی فایلهای حلنشده در آن مسیر را در بر خواهد گرفت. اگر هیچ نام <file> مشخص نشده باشد، git mergetool برنامه ابزار ادغام را روی هر فایلی که دارای تعارض ادغام است اجرا میکند.
گزینهها (OPTIONS)
-t <tool>, --tool=<tool>
اگر برنامه حل ادغام مشخص نشده باشد، git mergetool از متغیر پیکربندی merge.tool استفاده خواهد کرد. اگر متغیر پیکربندی merge.tool تنظیم نشده باشد، git mergetool یک پیشفرض مناسب را انتخاب خواهد کرد.
میتوانید با تنظیم متغیر پیکربندی mergetool.<tool>.path بهطور صریح مسیر کامل ابزار را مشخص کنید. برای نمونه، میتوانید مسیر مطلق kdiff3 را با تنظیم mergetool.kdiff3.path پیکربندی کنید. در غیر این صورت، git mergetool فرض میکند که ابزار در $PATH در دسترس است.
به جای اجرای یکی از برنامههای ابزار ادغام شناختهشده، git mergetool میتواند با تعیین خط فرمانی که باید فراخوانی شود در متغیر پیکربندی mergetool.<tool>.cmd شخصیسازی شود تا یک برنامه جایگزین را اجرا کند.
هنگامی که git mergetool با این ابزار فراخوانی میشود (چه از طریق گزینه -t یا --tool و چه از طریق متغیر پیکربندی merge.tool)، خط فرمان پیکربندیشده فراخوانی میشود در حالی که BASE روی نام یک فایل موقت حاوی پایه مشترک برای ادغام (در صورت وجود) تنظیم شده است؛ LOCAL روی نام یک فایل موقت حاوی محتویات فایل روی شاخه جاری تنظیم شده است؛ REMOTE روی نام یک فایل موقت حاوی محتویات فایلِ در حال ادغام تنظیم شده است، و MERGED روی نام فایلی تنظیم شده است که ابزار ادغام باید نتیجه حل تعارض ادغام را در آن بنویسد.
اگر ابزار ادغام سفارشی با کد خروج خود موفقیت حل ادغام را به درستی نشان دهد، متغیر پیکربندی mergetool.<tool>.trustExitCode میتواند روی true تنظیم شود. در غیر این صورت، git mergetool پس از خروج ابزار سفارشی، از کاربر درخواست میکند تا موفقیت حل تعارض را مشخص کند.
--tool-help
-y, --no-prompt
--prompt
-g, --gui
--no-gui
-O<orderfile>
پیکربندی (CONFIGURATION)
همه موارد پایینتر از این خط در این بخش بهطور گزینشی از مستندات git-config(1) آورده شدهاند. محتوا همان چیزی است که در آنجا یافت میشود:
mergetool.<tool>.path
mergetool.<tool>.cmd
mergetool.<tool>.hideResolved
mergetool.<tool>.trustExitCode
mergetool.meld.hasOutput
mergetool.meld.useAutoMerge
mergetool.<variant>.layout
mergetool.hideResolved
mergetool.keepBackup
mergetool.keepTemporaries
mergetool.writeToTemp
mergetool.prompt
mergetool.guiDefault
فایلهای موقت (TEMPORARY FILES)
دستور git mergetool هنگام حل تعارضهای ادغام، فایلهای پشتیبان *.orig ایجاد میکند. پس از ادغام موفق یک فایل و پایان یافتن نشست git mergetool آن، حذف این فایلها بیخطر است.
تنظیم متغیر پیکربندی mergetool.keepBackup روی false باعث میشود git mergetool همزمان با ادغام موفق فایلها، فایلهای پشتیبان را بهطور خودکار حذف کند.
نکات ویژه موتورهای ادغام (BACKEND SPECIFIC HINTS)
vimdiff
توضیحات
هنگام مشخص کردن --tool=vimdiff در git mergetool، گیت ابزار Vim را با چیدمان ۴ پنجره که به روش زیر توزیع شده است باز میکند:
--------------------------------------------- | | | | | LOCAL | BASE | REMOTE | | | | | --------------------------------------------- | | | MERGED | | | ---------------------------------------------
LOCAL، BASE و REMOTE بافرهای فقطخواندنی هستند که محتویات فایل دارای تعارض را در کامیتهای مشخصی نشان میدهند (بهترتیب «کامیتی که در حال ادغام در آن هستید»، «کامیت جد مشترک» و «کامیتی که از آن در حال ادغام هستید»).
MERGED یک بافر قابلنوشتن است که در آن باید تعارضات را برطرف کنید (با استفاده از سایر بافرهای فقطخواندنی به عنوان مرجع). پس از پایان کار، مانند معمول ذخیره کرده و از Vim خارج شوید (:wq) یا اگر میخواهید عملیات را لغو کنید، با استفاده از :cq خارج شوید.
پیکربندی
چیدمان
میتوانید چیدمان پنجرههای مورد استفاده توسط Vim را با تنظیم متغیر پیکربندی mergetool.vimdiff.layout تغییر دهید که رشتهای را میپذیرد که در آن جداکنندههای زیر دارای معنای ویژهای هستند:
اولویت عملگرها به صورت زیر است (میتوانید از پرانتز برای تغییر آن استفاده کنید):
`@` > `+` > `/` > `,`
اجازه دهید برای درک نحوه عملکرد، چند مثال را بررسی کنیم:
این دقیقاً همان چیدمان پیشفرضی است که قبلاً دیدهایم.
توجه داشته باشید که / بر , تقدم دارد و بنابراین در این مورد پرانتزها لازم نیستند. تعریف چیدمان بعدی معادل است:
layout = "LOCAL,BASE,REMOTE / MERGED"
اگر بنا به دلایلی علاقهای به بافر BASE نداشته باشیم.
--------------------------------------------- | | | | | | | | | LOCAL | MERGED | REMOTE | | | | | | | | | ---------------------------------------------
فقط بافر MERGED نمایش داده خواهد شد. با این حال توجه داشته باشید که تمام بافرهای دیگر همچنان در vim بارگذاری شدهاند و میتوانید با دستور «buffers» به آنها دسترسی داشته باشید.
--------------------------------------------- | | | | | MERGED | | | | | ---------------------------------------------
هنگامی که MERGED در چیدمان وجود ندارد، باید یکی از بافرها را با علامت اتساین (@) «نشانهگذاری» کنید. آن بافر به بافری تبدیل میشود که باید پس از حل تعارضات آن را ویرایش کرده و ذخیره نمایید.
--------------------------------------------- | | | | | | | | | | LOCAL | REMOTE | | | | | | | | | | ---------------------------------------------
سه برگه باز خواهد شد: اولین برگه یک نسخه از چیدمان پیشفرض است، در حالی که دو برگه دیگر بهترتیب فقط تفاوتهای میان (BASE و LOCAL) و (BASE و REMOTE) را نشان میدهند.
--------------------------------------------- | <TAB #1> | TAB #2 | TAB #3 | | --------------------------------------------- | | | | | LOCAL | BASE | REMOTE | | | | | --------------------------------------------- | | | MERGED | | | ---------------------------------------------
--------------------------------------------- | TAB #1 | <TAB #2> | TAB #3 | | --------------------------------------------- | | | | | | | | | | BASE | LOCAL | | | | | | | | | | ---------------------------------------------
--------------------------------------------- | TAB #1 | TAB #2 | <TAB #3> | | --------------------------------------------- | | | | | | | | | | BASE | REMOTE | | | | | | | | | | ---------------------------------------------
مشابه مثال قبل، اما یک برگه چهارم با همان اطلاعات برگه اول و با چیدمانی متفاوت اضافه میکند.
------------------------------------------------- | TAB #1 | TAB #2 | TAB #3 | <TAB #4> | ------------------------------------------------- | LOCAL | | |---------------------| | | BASE | MERGED | |---------------------| | | REMOTE | | -------------------------------------------------
توجه داشته باشید که در تعریف برگه نهایی چگونه باید از پرانتز استفاده کنیم تا , بر / تقدم پیدا کند.
گونهها
(Variants)
به جای --tool=vimdiff، میتوانید از یکی از این گونههای دیگر نیز استفاده کنید:
هنگام استفاده از این گونهها، برای تعیین یک چیدمان سفارشی باید متغیرهای پیکربندی mergetool.gvimdiff.layout و mergetool.nvimdiff.layout را به جای mergetool.vimdiff.layout تنظیم کنید (اگرچه در صورت تنظیم نشدن متغیر ویژه آن گونه، متغیر دوم به عنوان جایگزین استفاده خواهد شد).
علاوه بر این، برای سازگاری با نسخههای قبلی گیت، میتوانید 1، 2 یا 3 را به vimdiff یا هر یک از گونهها اضافه کنید (مثلاً: vimdiff3، nvimdiff1 و غیره) تا از یک چیدمان از پیش تعریفشده استفاده نمایید. به عبارت دیگر، استفاده از --tool=[g|n]vimdiff<x> معادل است با استفاده از --tool=[g|n]vimdiff و تنظیم متغیر پیکربندی mergetool.[g|n]vimdiff.layout روی...
مثال: استفاده از --tool=gvimdiff2 برنامه gvim را با سه ستون (LOCAL، MERGED و REMOTE) باز میکند.
گیت (GIT)
بخشی از مجموعه git(1)
| 2026-06-29 | Git 2.55.0 |