مشاهده دستورات git diff به صورت گرافیکی

از جمله ویژگی‌های فوق‌العاده گیت، امکان مشاهده تغییرات است. ما این امکان را داریم تا بتونیم تغییرات یک branch را با branch دیگه و یا حتی یک commit را با commit دیگر مشاهده کنیم. به طور کلی همه‌ی اینها با مجموعه دستور:

git diff

امکان پذیر است. اما چیزی که احتمالا مطلوب شما هم نباشد، دیدن این تغییرات در محیط ترمینال است. خوشبختانه برای این مشکل راه حل وجود دارد و با اتصال یک نرم‌افزار گرافیکی دیگر به git، می‌توان در وضعیت خواناتری به بررسی این تغییرات پرداخت. در ادامه به بررسی نحوه نصب و راه اندازی یکی از این نرم افزارها به نام Meld خواهیم پرداخت.

Meld نرم‌افزاری رایگان، قابل نصب برای لینوکس، ویندوز و مک و با گرافیکی قابل قبول است. اگر ترجیحتان نرم افزار دیگری است، کافی است که در دستورات زیر جای meld نام آن را جایگزین کنید.

ابتدا نرم افزار meld را از سایت سازنده دانلود و نصب کنید.

بعد باید آن را به عنوان ابزار difftool به گیت بشناسانیم. برای اینکار دستور زیر را در محیط ترمینال گیت وارد می‌کنیم:


git config --global difftool meld

حالا آدرس اجرایش را به آن می‌دهیم تا بتواند meld را اجرا کند:


git config --global diff.tool.meld.path "C:\Program Files (x86)\Meld\Meld.exe"

واضحه که اگر محل نصب meld در سیستم عامل ویندوز شما آدرس دیگری دارد، باید آن آدرس را جایگزین آدرس دستور بالا کنید. همچنین اگر سیستم عامل شما ویندوز نیست برای ست کردن این تنظیم باید راه دیگری پیش گیرید.

تبریک میگم، تا اینجای کار درصد زیادی از مشکل شما حل شده است.

حالا بیایید آن را تست کنیم. ابتدا تغییراتی را در پروژه انجام دهید اما بعد از ذخیره آن‌ها را کامیت نکنید. با اجرای دستور


git difftool

در گیت، می‌خواهیم این تغییرات را در Meld مشاهده کنیم. میبینید که git برای نشان‌ دادن تغییرات تک تک فایل‌ها، از شما سوال می‌پرسد. چیزی که به نظر جالب نمیاد.

برای اینکه گیت بابت بازکردن فایل‌ها از ما سوال نپرسد از این دستور استفاده می‌‌شود:

git config --global difftool.prompt false

اما این خیلی مشکل ما رو حل نمی‌کنه، واسه همین دستور زیر را پیشنهاد می‌کنم تا بتوانید یکجا فایل‌های تغییر یافته پروژه را ببینید و بین آن‌ها بچرخید:


git difftool --dir-diff

علاوه بر این کاربرد، از Meld می‌توان برای رفع Merge conflict هم استفاده کرد. راه اندازی آن هم به سادگی دستورات بالاست و کافی است جای difftool از mergetool استفاده کنید:


git config --global merge.tool meld
git config --global mergetool.meld.path "C:\Program Files (x86)\Meld\Meld.exe" 
git config --global mergetool.prompt false

و از این به بعد هرگاه به mergeconflict برخوردید با اجرای دستور زیر به راحتی آن را رفع کنید:


git mergetool

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.