ما هو git diff وكيف أستخدمه؟
يُعتبر git diff أحد أكثر الأوامر قوة ومرونة في نظام التحكم في الإصدارات Git. يوفر هذا الأمر طريقة لمقارنة التغييرات بين مستودعاتك أو ملفاتك في مراحل مختلفة. إذا كنت مطورًا أو تعمل على إدارة المشاريع البرمجية، فإن git diff هو أداة أساسية لفهم الاختلافات بين الإصدارات والتعديلات على الكود الخاص بك.
ما هو git diff؟
git diff هو أمر يُستخدم في Git لعرض الفروقات بين حالتين مختلفتين في المستودع الخاص بك. يمكن أن يُستخدم لمقارنة:
- التغييرات غير المُرحَّلة (unstaged changes) مقابل آخر commit.
- التغييرات المُرحَّلة (staged changes) مقابل آخر commit.
- الاختلافات بين فروع (branches) مختلفة.
- الاختلافات بين نقطتين في تاريخ المشروع (commits).
يقوم الأمر بإنتاج patch-like output يوضح ما تمت إضافته أو حذفه في الملفات.
لماذا يُعتبر git diff مهمًا؟
يوفر git diff رؤية دقيقة للتغييرات في الكود، مما يساعد على:
- مراجعة التعديلات قبل إضافتها إلى مرحلة الترحيل أو القيام بـcommit.
- حل التعارضات (conflicts) عند دمج الفروع.
- تحليل تأثير التغييرات على المشروع.
- مراقبة جودة الكود ومعرفة الأخطاء بسرعة.
كيفية استخدام git diff
1. عرض التغييرات غير المُرحَّلة
لإظهار التغييرات غير المُرحَّلة مقارنةً بالـcommit الأخير:
git diff
هذا الأمر يعرض جميع التعديلات التي أجريتها على الملفات ولكن لم تقم بترحيلها باستخدام git add.
2. عرض التغييرات المُرحَّلة
لإظهار التغييرات التي تمت إضافتها إلى المرحلة (staging area):
git diff --staged
يعرض هذا الأمر التعديلات المُرحَّلة ولكن لم يتم إضافتها إلى commit بعد.
3. مقارنة فروع مختلفة
لمقارنة فرعين (branches)، يمكنك استخدام الأمر:
git diff branch1 branch2
على سبيل المثال، لمقارنة الفرع main مع feature-branch:
git diff main feature-branch
4. مقارنة Commits محددة
لمقارنة نقطتين في تاريخ المشروع:
git diff commit1 commit2
يمكنك الحصول على معرفات commit باستخدام الأمر:
git log
5. مقارنة الملفات
إذا كنت ترغب في مقارنة ملف معين بين مرحلتين، يمكنك تحديد اسم الملف:
git diff HEAD file.txt
هذا يعرض الاختلافات بين HEAD (آخر commit) والملف المحدد.
فهم إخراج git diff
الإخراج الناتج عن git diff يحتوي على تفاصيل مثل:
- أرقام الأسطر: تشير إلى أين تمت الإضافة أو الحذف.
- علامة “+” و”-“: تشير إلى الأسطر المضافة والمحذوفة.
- معلومات السياق: تُظهر أسطر الكود المحيطة بالتغييرات.
على سبيل المثال:
diff --git a/file.txt b/file.txt
index 83db48f..e3d1f28 100644
--- a/file.txt
+++ b/file.txt
@@ -1,3 +1,3 @@
-This is the old line.
+This is the new line.
خيارات إضافية لـ git diff
هناك العديد من الخيارات المتاحة لتحسين إخراج git diff:
--name-only: يعرض أسماء الملفات التي تحتوي على تغييرات فقط.--name-status: يعرض حالة كل ملف (مُعدل، مضاف، محذوف).--color: يضيف ألوانًا لإخراج الفرق لتسهيل القراءة.-w: يتجاهل الاختلافات في المسافات البيضاء (whitespace).
git diff --name-only
أفضل الممارسات لاستخدام git diff
لتجنب التعقيدات، اتبع هذه النصائح:
- استخدم
git diffبشكل متكرر لفحص التغييرات قبل تنفيذها. - استخدم
git add -pلتقسيم التغييرات الكبيرة إلى أجزاء أصغر لمراجعتها بشكل أفضل. - دمج
git diffمع أدوات مقارنة رسومية مثل meld أو kdiff3 لسهولة الفحص.
الخلاصة
يُعد git diff أداة قوية ومرنة في Git تتيح لك فهم التغييرات في مشروعك بشكل دقيق. سواء كنت تعمل على حل تعارضات أو مراجعة الكود قبل التنفيذ، فإن استخدام هذا الأمر بشكل منتظم سيساعدك في تحسين إدارة مستودعاتك البرمجية.
ابدأ باستخدام git diff الآن واستكشف قوته لتحسين تجربتك مع Git!
