ما الفرق بين `git stash` و `git commit`؟

في عالم البرمجة وإدارة الشيفرات البرمجية، يعتبر git أداة قوية لتتبع التغييرات في المشروع. من بين الأوامر الأساسية التي يستخدمها المطورون بشكل يومي هي أوامر git stash و git commit. لكن ما الفرق بين هذين الأمرين؟ في هذه المقالة، سنتعرف على الفرق بينهما، واستخدامات كل منهما، وكيفية اتخاذ القرار بشأن أي منهما يجب استخدامه في سيناريوهات مختلفة.

ما هو `git stash`؟

أمر git stash يستخدم لتخزين التغييرات غير المؤكدة مؤقتًا، مما يسمح للمطور بالانتقال إلى فرع آخر أو إجراء عمليات أخرى دون فقدان التغييرات الجارية في الشيفرة البرمجية. عندما تقوم بتعديل الملفات، ولكنك لست جاهزًا بعد لارتكاب (commit) التغييرات، يمكنك استخدام git stash لحفظ هذه التغييرات مؤقتًا.

متى يتم استخدام `git stash`؟

يتم استخدام git stash في الحالات التالية:

  • التنقل بين الفروع: عندما تكون لديك تغييرات غير مؤكدة على الفرع الحالي وتحتاج إلى التبديل إلى فرع آخر للعمل على شيء مختلف.
  • التركيز على المهام المهمة: عندما تحتاج إلى ترك التغييرات الحالية والعودة إليها لاحقًا دون التأثير على سير العمل.
  • عدم الرغبة في حفظ التغييرات فورًا: عندما لا تريد ارتكاب التغييرات على الفور ولكنك بحاجة إلى تخزينها مؤقتًا.

كيف تستخدم `git stash`؟

الاستخدام الأساسي للأمر git stash هو كالتالي:

git stash

بمجرد تنفيذ هذا الأمر، ستقوم git بتخزين جميع التغييرات غير المؤكدة في مكدس مؤقت، ويمكنك العودة إليها لاحقًا باستخدام الأمر التالي:

git stash pop

أو إذا كنت ترغب في عرض قائمة بالتغييرات المخزنة:

git stash list

ما هو `git commit`؟

أمر git commit يستخدم لتسجيل التغييرات التي تم إجراؤها في الشيفرة البرمجية بشكل دائم في مستودع git. عند تنفيذ الأمر git commit، يتم حفظ التغييرات في التاريخ الزمني للمشروع، مما يسمح بالرجوع إليها لاحقًا أو مشاركة هذه التغييرات مع الآخرين.

متى يتم استخدام `git commit`؟

يتم استخدام git commit في الحالات التالية:

  • تثبيت التغييرات بشكل دائم: عندما تكون مستعدًا لإضافة التغييرات التي قمت بها بشكل دائم إلى المستودع.
  • إعدادات للفرق: عندما تعمل ضمن فريق ويجب عليك تأكيد التغييرات حتى يتمكن الآخرون من الوصول إليها ومراجعتها.
  • تاريخ التعديلات: عندما ترغب في إنشاء سجل من التغييرات التي قمت بها حتى تتمكن من الرجوع إليها إذا لزم الأمر.

كيف تستخدم `git commit`؟

قبل تنفيذ git commit، يجب أولاً إضافة التغييرات إلى المنطقة المؤقتة باستخدام الأمر git add:

git add .

ثم يمكنك ارتكاب التغييرات باستخدام الأمر التالي:

git commit -m "رسالة التزام التغييرات"

بعد تنفيذ هذا الأمر، سيتم تخزين التغييرات مع رسالة توضح ما تم تغييره.

الفرق بين `git stash` و `git commit`

على الرغم من أن كلا من git stash و git commit يتعلقان بتخزين التغييرات، إلا أنهما يخدمان أغراضًا مختلفة:

  • الاحتفاظ بالتغييرات المؤقتة مقابل التغييرات الدائمة: git stash يخزن التغييرات بشكل مؤقت فقط ويمكنك استرجاعها لاحقًا، بينما git commit يخزن التغييرات بشكل دائم في مستودع git.
  • عدم مشاركة التغييرات مقابل مشاركة التغييرات: التغييرات المخزنة باستخدام git stash غير مرئية للآخرين، بينما التغييرات التي يتم ارتكابها باستخدام git commit تصبح جزءًا من سجل المشروع ويمكن مشاركتها مع فرق العمل.
  • تأثير التغييرات على المستودع: git stash لا يؤثر على المستودع نفسه، بل على بيئة العمل المحلية، في حين أن git commit يؤدي إلى تغيير دائم في سجل التغييرات في المستودع.

متى تختار `git stash` و `git commit`؟

يمكنك اتخاذ القرار بناءً على حالة العمل الخاصة بك:

  • استخدم `git stash`: عندما تكون بحاجة إلى ترك التغييرات مؤقتًا والانتقال إلى مهمة أخرى دون التأثير على تاريخ المستودع.
  • استخدم `git commit`: عندما تكون مستعدًا لحفظ التغييرات بشكل دائم في مستودعك، سواء كان ذلك للمشاركة مع الفريق أو للاحتفاظ بتاريخ التعديلات.

خاتمة

إذن، الفرق بين git stash و git commit يعود إلى الغرض من كل أمر وطريقة تعامل git مع التغييرات. يعتبر git stash أداة قوية للمطورين الذين يحتاجون إلى تخزين التغييرات مؤقتًا، بينما git commit هو الوسيلة المستخدمة لحفظ التغييرات بشكل دائم وتوثيقها في تاريخ المشروع. اعتمادًا على احتياجاتك، يمكنك استخدام أي منهما أو كلاهما معًا لتحقيق أفضل نتائج في إدارة الشيفرات البرمجية.