GIT-DIFFTOOL(1) راهنمای Git GIT-DIFFTOOL(1)

git-difftool - نمایش تغییرات با استفاده از ابزارهای متداول diff

git difftool [<options>] [<commit> [<commit>]] [--] [<path>...]

دستور git difftool دستوری در گیت است که به شما امکان می‌دهد فایل‌ها را میان نسخه‌ها با استفاده از ابزارهای متداول diff مقایسه و ویرایش کنید. git difftool یک پیشانه (frontend) برای git diff است و همان گزینه‌ها و آرگومان‌ها را می‌پذیرد. به git-diff(1) مراجعه کنید.

-d, --dir-diff

فایل‌های تغییر‌یافته را در یک مکان موقت کپی کرده و یک diff دایرکتوری روی آن‌ها اجرا می‌کند. این حالت هرگز پیش از راه‌اندازی ابزار diff درخواستی برای تأیید نمایش نمی‌دهد.

-y, --no-prompt

پیش از راه‌اندازی ابزار diff درخواستی برای تأیید نمایش ندهد.

--prompt

پیش از هر بار فراخوانی ابزار diff درخواست تأیید نمایش دهد. این رفتار پیش‌فرض است؛ این گزینه برای نادیده گرفتن هرگونه تنظیمات پیکربندی ارائه شده است.

--rotate-to=<file>

نمایش diff را از <file> آغاز می‌کند، مسیرهای قبل از آن به انتهای خروجی منتقل شده و نمایش داده می‌شوند.

--skip-to=<file>

نمایش diff را از <file> آغاز می‌کند، و تمام مسیرهای قبل از آن نادیده گرفته می‌شوند.

-t <tool>, --tool=<tool>

از ابزار diff مشخص‌شده توسط <tool> استفاده می‌کند. مقادیر معتبر شامل emerge، kompare، meld و vimdiff هستند. دستور git difftool --tool-help را برای مشاهده فهرست تنظیمات معتبر <tool> اجرا کنید.

اگر ابزار diff مشخص نشده باشد، git difftool از متغیر پیکربندی diff.tool استفاده خواهد کرد. اگر متغیر پیکربندی diff.tool تنظیم نشده باشد، git difftool یک مقدار پیش‌فرض مناسب را انتخاب خواهد کرد.

می‌توانید با تنظیم متغیر پیکربندی difftool.<tool>.path به‌طور صریح مسیر کامل ابزار را مشخص کنید. برای نمونه، می‌توانید مسیر مطلق kdiff3 را با تنظیم difftool.kdiff3.path پیکربندی کنید. در غیر این صورت، git difftool فرض می‌کند که ابزار در PATH در دسترس است.

به جای اجرای یکی از ابزارهای شناخته‌شده diff، git difftool را می‌توان با مشخص کردن خط فرمانی که باید فراخوانی شود در متغیر پیکربندی difftool.<tool>.cmd شخصی‌سازی کرد تا یک برنامه جایگزین را اجرا کند.

هنگامی که git difftool با این ابزار فراخوانی می‌شود (چه از طریق گزینه -t یا --tool و چه از طریق متغیر پیکربندی diff.tool)، خط فرمان پیکربندی‌شده با متغیرهای زیر که در دسترس خواهند بود فراخوانی می‌شود: $LOCAL روی نام فایل موقت حاوی محتویات پیش‌تصویر diff تنظیم می‌شود و $REMOTE روی نام فایل موقت حاوی محتویات پس‌تصویر diff تنظیم می‌شود. $MERGED نام فایلی است که در حال مقایسه است. $BASE برای سازگاری با دستورات سفارشی ابزار ادغام (merge tool) ارائه شده است و همان مقدار $MERGED را دارد.

--tool-help

چاپ فهرستی از ابزارهای diff که می‌توان با --tool استفاده کرد.

--symlinks, --no-symlinks

رفتار پیش‌فرض git difftool این است که هنگام اجرا در حالت --dir-diff و زمانی که سمت راست مقایسه محتوایی مشابه با فایل موجود در درخت کاری داشته باشد، پیوندهای نمادین (symlinks) به درخت کاری ایجاد کند.

مشخص کردن --no-symlinks به git difftool دستور می‌دهد که در عوض رونوشت‌ها (copies) را ایجاد کند. --no-symlinks در ویندوز پیش‌فرض است.

-x <command>, --extcmd=<command>

یک دستور سفارشی برای مشاهده diffها مشخص کنید. هنگامی که این گزینه مشخص شود، git-difftool پیش‌فرض‌های پیکربندی‌شده را نادیده گرفته و دستور <command> $LOCAL $REMOTE را اجرا می‌کند. علاوه بر این، $BASE در محیط تنظیم می‌شود.

-g, --gui, --no-gui

هنگامی که git-difftool با گزینه -g یا --gui فراخوانی می‌شود، ابزار پیش‌فرض diff از متغیر پیکربندی‌شده diff.guitool به جای diff.tool خوانده خواهد شد. این مورد ممکن است به‌طور خودکار با استفاده از متغیر پیکربندی difftool.guiDefault انتخاب شود. گزینه --no-gui می‌تواند برای لغو این تنظیمات استفاده شود. اگر diff.guitool تنظیم نشده باشد، به‌ترتیب گزینه‌های جایگزین merge.guitool، diff.tool و merge.tool بررسی می‌شوند تا زمانی که یک ابزار پیدا شود.

--trust-exit-code, --no-trust-exit-code

خطاهای گزارش‌شده توسط ابزار diff به‌طور پیش‌فرض نادیده گرفته می‌شوند. از --trust-exit-code استفاده کنید تا git-difftool هنگامی که ابزار diff فراخوانی‌شده یک کد خروج غیرصفر برمی‌گرداند، خارج شود.

هنگامی که --trust-exit-code به کار رود، git-difftool کد خروج ابزار فراخوانی‌شده را منتقل می‌کند.

برای فهرست کامل گزینه‌های پشتیبانی‌شده به git-diff(1) مراجعه کنید.

زمانی که معادل‌های difftool تعریف نشده باشند، git difftool به متغیرهای پیکربندی git mergetool رجوع می‌کند.

همه موارد بالاتر از این خط در این بخش از مستندات git-config(1) گنجانده نشده است. محتوایی که در ادامه می‌آید همان چیزی است که در آنجا یافت می‌شود:

diff.tool

کنترل می‌کند که کدام ابزار diff توسط git-difftool(1) استفاده شود. این متغیر مقدار پیکربندی‌شده در merge.tool را بازنویسی می‌کند. فهرست زیر مقادیر معتبر توکار (built-in) را نشان می‌دهد. هر مقدار دیگری به عنوان یک ابزار diff سفارشی در نظر گرفته می‌شود و مستلزم آن است که متغیر متناظر difftool.<tool>.cmd تعریف شده باشد.

diff.guitool

کنترل می‌کند که هنگام مشخص شدن فلگ -g/--gui، کدام ابزار diff توسط git-difftool(1) استفاده شود. این متغیر مقدار پیکربندی‌شده در merge.guitool را بازنویسی می‌کند. فهرست زیر مقادیر معتبر توکار را نشان می‌دهد. هر مقدار دیگری به عنوان یک ابزار diff سفارشی در نظر گرفته می‌شود و مستلزم آن است که متغیر متناظر difftool.<guitool>.cmd تعریف شده باشد.

araxis

استفاده از Araxis Merge (نیازمند نشست گرافیکی است)

bc

استفاده از Beyond Compare (نیازمند نشست گرافیکی است)

bc3

استفاده از Beyond Compare (نیازمند نشست گرافیکی است)

bc4

استفاده از Beyond Compare (نیازمند نشست گرافیکی است)

codecompare

استفاده از Code Compare (نیازمند نشست گرافیکی است)

deltawalker

استفاده از DeltaWalker (نیازمند نشست گرافیکی است)

diffmerge

استفاده از DiffMerge (نیازمند نشست گرافیکی است)

diffuse

استفاده از Diffuse (نیازمند نشست گرافیکی است)

ecmerge

استفاده از ECMerge (نیازمند نشست گرافیکی است)

emerge

استفاده از Emerge در Emacs

examdiff

استفاده از ExamDiff Pro (نیازمند نشست گرافیکی است)

guiffy

استفاده از ابزار Diff متعلق به Guiffy (نیازمند نشست گرافیکی است)

gvimdiff

استفاده از gVim (نیازمند نشست گرافیکی است)

kdiff3

استفاده از KDiff3 (نیازمند نشست گرافیکی است)

kompare

استفاده از Kompare (نیازمند نشست گرافیکی است)

meld

استفاده از Meld (نیازمند نشست گرافیکی است)

nvimdiff

استفاده از Neovim

opendiff

استفاده از FileMerge (نیازمند نشست گرافیکی است)

p4merge

استفاده از HelixCore P4Merge (نیازمند نشست گرافیکی است)

smerge

استفاده از Sublime Merge (نیازمند نشست گرافیکی است)

tkdiff

استفاده از TkDiff (نیازمند نشست گرافیکی است)

vimdiff

استفاده از Vim

vscode

استفاده از Visual Studio Code (نیازمند نشست گرافیکی است)

winmerge

استفاده از WinMerge (نیازمند نشست گرافیکی است)

xxdiff

استفاده از xxdiff (نیازمند نشست گرافیکی است)

difftool.<tool>.cmd

دستور لازم برای فراخوانی ابزار diff مشخص‌شده را تعیین کنید. دستور مشخص‌شده در پوسته با متغیرهای زیر که در دسترس خواهند بود ارزیابی می‌شود: LOCAL روی نام فایل موقت حاوی محتویات پیش‌تصویر diff تنظیم می‌شود و REMOTE روی نام فایل موقت حاوی محتویات پس‌تصویر diff تنظیم می‌شود.

برای جزئیات بیشتر به گزینه --tool=<tool> در git-difftool(1) مراجعه کنید.

difftool.<tool>.path

مسیر ابزار داده‌شده را بازنویسی کنید. این در صورتی که ابزار شما در PATH قرار ندارد مفید است.

difftool.trustExitCode

در صورتی که ابزار diff فراخوانی‌شده وضعیت خروج غیرصفر بازگرداند، از difftool خارج شود.

برای جزئیات بیشتر به گزینه --trust-exit-code در git-difftool(1) مراجعه کنید.

difftool.prompt

پیش از هر بار فراخوانی ابزار diff درخواست تأیید نمایش دهد.

difftool.guiDefault

مقدار true را تنظیم کنید تا به‌طور پیش‌فرض از diff.guitool استفاده شود (معادل مشخص کردن آرگومان --gui)، یا auto را برای انتخاب diff.guitool یا diff.tool بسته به وجود مقدار در متغیر محیطی DISPLAY تنظیم کنید. مقدار پیش‌فرض false است، که در آن آرگومان --gui باید به‌طور صریح ارائه شود تا diff.guitool مورد استفاده قرار گیرد.

git-diff(1)

نمایش تغییرات میان کامیت‌ها، کامیت و درخت کاری، و غیره

git-mergetool(1)

اجرای ابزارهای حل تعارض ادغام برای حل تعارضات ادغام

git-config(1)

دریافت و تنظیم گزینه‌های مخزن یا سراسری

بخشی از مجموعه git(1)

2026-06-29 Git 2.55.0