ما هو الفرق بين git diff و git status؟
إذا كنت تعمل مع نظام التحكم في الإصدارات Git، فمن المؤكد أنك قد واجهت العديد من الأوامر التي تُستخدم بشكل يومي. من بين هذه الأوامر، هناك git diff و git status، وهما من الأدوات الرئيسية التي يستخدمها المطورون لفهم حالة المستودع الخاص بهم. على الرغم من أنهما قد يبدوان متشابهين، إلا أن لكل منهما وظيفة فريدة. في هذه المقالة، سنتناول الفرق بين git diff و git status بشكل تفصيلي، مع أمثلة توضيحية.
ما هو git status؟
يُعتبر git status أحد أكثر الأوامر الأساسية في Git. يستخدم هذا الأمر لتوفير ملخص سريع لحالة المستودع. عند تشغيل git status، ستحصل على معلومات حول الملفات التي:
- تمت إضافتها إلى منطقة staging (المؤشر).
- تم تعديلها لكنها لم تُضف إلى منطقة staging.
- لم تتم متابعتها (untracked files).
إليكم مثالًا على إخراج أمر git status:
On branch main
Your branch is up to date with 'origin/main'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: file1.txt
modified: file2.txt
Untracked files:
(use "git add <file>..." to include in what will be committed)
newfile.txt
كما يظهر أعلاه، يوفر git status وصفًا شاملًا لما يحدث في المستودع الخاص بك دون تقديم تفاصيل دقيقة عن التعديلات.
متى تستخدم git status؟
يُفضل استخدام git status عندما تحتاج إلى لمحة سريعة عن حالة المستودع. يمكن أن يكون مفيدًا في الحالات التالية:
- معرفة الملفات المعدلة أو الجديدة قبل إجراء
commit. - التأكد من أن كل التغييرات المهمة تمت إضافتها إلى staging area.
- التأكد من وجود ملفات غير متعقبة تحتاج إلى إضافتها إلى المستودع.
ما هو git diff؟
من جهة أخرى، يُستخدم git diff لمقارنة التغييرات بين حالات مختلفة للملفات. يركز هذا الأمر على عرض الفروقات الدقيقة بين الملفات، مثل الأسطر التي تم تعديلها، إضافتها، أو حذفها.
بشكل افتراضي، عند تشغيل git diff، يقوم بمقارنة محتوى دليل العمل (working directory) مع منطقة staging. يمكن تخصيص الأمر لمقارنة حالات مختلفة كما سنوضح لاحقًا.
إليكم مثالًا على إخراج أمر git diff:
diff --git a/file1.txt b/file1.txt
index e69de29..d95f3ad 100644
--- a/file1.txt
+++ b/file1.txt
@@ -1 +1,2 @@
This is a sample line.
+This is an added line.
كما نرى، يُظهر git diff الأسطر التي تمت إضافتها أو تعديلها بالتفصيل.
متى تستخدم git diff؟
يُفضل استخدام git diff عندما تحتاج إلى رؤية التفاصيل الدقيقة للتغييرات. يمكن أن يكون مفيدًا في الحالات التالية:
- مراجعة التغييرات قبل إضافتها إلى منطقة staging.
- مقارنة الاختلافات بين فرعين معينين.
- تحليل التعديلات قبل تقديم مراجعة الكود (code review).
الاختلافات الرئيسية بين git diff و git status
| الميزة | git status |
git diff |
|---|---|---|
| الغرض الأساسي | عرض ملخص لحالة المستودع. | عرض الفروقات بين حالات الملفات. |
| مستوى التفاصيل | ملخص عام بدون تفاصيل دقيقة. | تفاصيل دقيقة عن التعديلات. |
| الاستخدام النموذجي | التحقق من حالة الملفات قبل التنفيذ. | مراجعة التعديلات قبل إضافتها أو رفعها. |
| إظهار الفروقات | لا يظهر فروقات دقيقة. | يُظهر فروقات دقيقة بين النصوص. |
أمثلة عملية
استخدام git diff مع منطقة staging
يمكنك مقارنة التغييرات بين دليل العمل ومنطقة staging باستخدام الأمر التالي:
git diff
لرؤية الفروقات بين منطقة staging والمستودع الرئيسي، استخدم:
git diff --staged
استخدام git status في سيناريو العمل اليومي
عندما تبدأ العمل على مشروع وتريد معرفة حالة المستودع، قم بتشغيل:
git status
سيعطيك هذا الأمر فكرة واضحة عن الملفات المعدلة وغير المتعقبة.
الخاتمة
باختصار، يعد كل من git diff و git status أمرين أساسيين في العمل مع Git، ولكل منهما وظيفته الخاصة. بينما يُستخدم git status للحصول على نظرة عامة عن حالة المستودع، يُعتبر git diff الأداة المثالية لفحص التعديلات بالتفصيل. فهم الاختلافات بين هذين الأمرين واستخدامهما بشكل مناسب سيساعدك على تحسين إنتاجيتك وإدارة مستودعاتك بكفاءة.
نأمل أن تكون هذه المقالة قد وفرت لك توضيحًا شاملاً عن الفرق بين git diff و git status. إذا كنت بحاجة إلى المزيد من المعلومات، فلا تتردد في ترك تعليق أدناه!
