Git Commit: فئة رئيسية

نشرت: 2023-02-26
كمبيوتر محمول على خلفية زرقاء يعرض موجه أوامر Linux.
fatmawati achmad zaenuri / Shutterstock.com
يقوم أمر Git الالتزام بتخزين نسخ من التغييرات من دليل العمل في مستودع Git الخاص بك. ولكن يمكن أيضًا استخدامه لتعديل الالتزامات الحالية وعودة الالتزامات أيضًا.

من المتطلبات الأساسية لأي نظام تحكم في الإصدار تخزين إصدارات مختلفة من الملفات لك. في Git ، الأمر الذي يقوم بذلك هو commit . إليك كل ما تحتاج إلى معرفته.

جدول المحتويات

ما هو الالتزام في Git؟
تكوين أمر الالتزام
باستخدام أمر التنفيذ
التزام أساسي
ملفات التدريج التلقائي
الانطلاق والالتزام في نفس الوقت
الالتزام بفرع مختلف
إجراء تغييرات على الالتزامات
إزالة التغييرات من الالتزام
التراجع عن التزام كامل
سكين الجيش السويسري جيت

ما هو الالتزام في Git؟

الالتزامات هي سلسلة اللقطات التي يتم إجراؤها طوال دورة حياة المشروع التي تشكل تاريخ تطوره. الالتزامات هي التي تسمح لنا باستخراج نسخة من المشروع كما كانت في نقاط مختلفة في الماضي. لماذا هذا مهم؟

يتم استخدام أنظمة التحكم في الإصدار (VCS) بشكل شائع مع كود مصدر البرنامج ومشاريع التطوير. ولكن يمكن استخدامها بنجاح مع أي مجموعة من الملفات النصية ، مثل ملفات Markdown التي تحتوي على فصول من كتاب.

قد لا ترغب في معالجة كل ملف في أدلة المشروع بواسطة VCS ، لذلك يجب أن تكون قادرًا على ترشيح الملفات التي تريد التحكم في الإصدار. هذا يضيفهم إلى عرض التحكم في الإصدار الخاص بالمشروع. ستتم مراقبتها من أجل التغييرات.

هناك طريقة أخرى لتحقيق ذلك وهي استخدام قائمة التجاهل. هذا يخبر Git عن الملفات أو الدلائل أو أنواع الملفات التي يجب أن يتجاهلها دائمًا.

بمرور الوقت ، مع إضافة ملفات جديدة إلى المشروع ، سيتطلب البعض إضافتها إلى نظام التحكم في الإصدار. في Git ، يتم التعامل مع هذا عن طريق الأمر add . في الواقع ، يقوم الأمر add بعمل خدمة مزدوجة ، كما سنرى.

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

تكوين أمر الالتزام

يتم تخزين المعلومات حول الالتزام معها ، بحيث يكون من الممكن دائمًا معرفة من قام بالالتزام ومتى وما يحتويه الالتزام. يتم التقاط بعض هذه البيانات الوصفية في وقت الالتزام ، مثل رسالة الالتزام.

يمكن تكوين البيانات الوصفية المتعلقة بهوية أعضاء فريق التطوير من قبل كل مستخدم ، لمنع تكرار تقديم نفس المعلومات.

لتعيين اسمك عالميًا لجميع المستودعات على جهاز الكمبيوتر الخاص بك ، استخدم هذا الأمر.

 git config - global user.name "Dave McKay" 

تعيين اسم مستخدم Git العام

للتحقق من تعيين اسمك ، استخدم هذا الأمر.

 git config - global user.name 

التحقق من اسم مستخدم Git العالمي

إذا كنت بحاجة إلى استخدام اسم مختلف في مستودع معين ، فقم بالتغيير إلى دليل المشروع واستخدم نفس الأمر بدون الخيار --global .

 git config user.name "McKay، David"
 git config user.name 

تعيين اسم مستخدم Git خاص بالمستودع

لدينا الآن اسم مستخدم افتراضي مختلف لهذا المستودع ، ولا يزال اسمنا العالمي مستخدمًا لمستودعات أخرى.

بطريقة مماثلة ، يمكننا تعيين عنوان بريد إلكتروني إما عالميًا أو لمستودع واحد من خلال تضمين أو حذف الخيار --global .

 git config user.email "[email protected]"
 git config - global user.email "[email protected]"
 git config user.email
 git config - عالمي user.email 

تعيين عناوين البريد الإلكتروني الافتراضية لمستخدم Git العمومية والخاصة بالمستودع

يتم الاحتفاظ بهذه الإعدادات في ملفات التكوين. يتم الاحتفاظ بإعدادات Git العامة في "~ / .gitconfig" ، ويتم الاحتفاظ بالإعدادات الخاصة بالمستودع في ملف ".git / config" الخاص بالمستودع.

يشير أمر commit إلى هذه القيم ويستخدمها أثناء عمله.

باستخدام أمر التنفيذ

الاستخدام الأساسي لأمر commit هو أخذ الملفات الموجودة في منطقة التدريج ، والمعروفة باسم الفهرس ، وتخزينها كالتزام في الفرع الحالي للمستودع.

التزام أساسي

لدينا مشروع بملف تم تغييره. سنستخدم الأمر add لترتيب الملف ، ثم نلتزم به. نحن نستخدم الخيار -m (إرسال رسالة) حتى نتمكن من تقديم وصف موجز للغرض من التغييرات. إذا لم نستخدم هذا الخيار ، فسيُطلب منا إرسال رسالة الالتزام أثناء حدوث ذلك. من الأنسب إضافة واحد في سطر الأوامر.

 بوابة إضافة jibber.c
 git الالتزام -m "نص المساعدة المحدّث" 

التدريج والالتزام بملف واحد

إذا استخدمنا الأمر git log ، فيمكننا مراجعة تفاصيل الالتزامات ، بترتيب زمني ، مع وجود الالتزام الأحدث في أعلى القائمة.

 سجل بوابة 

التحقق من سجل مستودع Git

يتم عرض الالتزامات في less .

الالتزام الأحدث في الجزء العلوي من سجل Git

تم وضع علامة على الالتزام بالاسم وعنوان البريد الإلكتروني الذي قدمناه سابقًا ، ويتم تسجيل رسالة الالتزام أيضًا.

ملفات التدريج التلقائي

يمكن أن يستغرق تنظيم العديد من الملفات بعض الوقت. طريقة مختلفة هي استخدام الخيار -A (الكل) مع add .

يقوم هذا تلقائيًا بمراحل جميع الملفات المعدلة جنبًا إلى جنب مع جميع الملفات التي لم يتم تعقبها حاليًا. تحترم مرحلة الملفات التي لم يتم تعقبها الإعدادات الموجودة في ملف ".gitignore" الخاص بك. لن يقوم Git بترتيب الملفات التي أخبرتها أنك لا تريد تضمينها. أخيرًا ، تتم إزالة الملفات الموجودة في الفهرس والتي لم تعد موجودة في دليل العمل من الفهرس.

من الواضح أن الخيار -A يمكن أن يتسبب في حدوث الكثير مرة واحدة. يمنحك خيار --dry-run معاينة للتغييرات دون إجرائها فعليًا.

 git add -A-- تشغيل جاف 

استخدام --dry-run لمعاينة الملفات التي سيتم تنظيمها وإلغاء تنظيمها

في مثالنا ، سيتم وضع ملفين موجودين معدلين ، وملفين جديدين. دعنا نمضي قدمًا ونستخدم الخيار -A قبل أن نستخدم أمر commit .

 بوابة add -A
 git الالتزام -m "التحليل المحسن" 

الالتزام بالملفات المتغيرة والمنشأة حديثًا ، بعد استخدام خيار الإضافة -A

يمكننا أن نرى أنه تم تغيير أربعة ملفات. اثنان منهم من الملفات التي تم إنشاؤها حديثًا ، والتي تم سردها.

الانطلاق والالتزام في نفس الوقت

يحتوي أمر commit على خيار أحرف صغيرة -a (الكل). يؤدي هذا إلى التدريج والتنفيذ للملفات في خطوة واحدة.

يقوم خيار commit -a بالتعديل على الملفات الموجودة ، ويزيل الملفات من الفهرس إذا تمت إزالتها من دليل العمل الخاص بك. لا يقوم تلقائيًا بوضع الملفات التي لم يتم تعقبها.

مثل الأمر add ، يحتوي أمر التنفيذ على خيار --dry-run يسمح لك بمعاينة إجراءاته قبل تنفيذه.

 بوابة الالتزام -a -Dry-run 

استخدام خيار الالتزام -a لمعاينة التغييرات دون تنفيذها

الآن دعنا ننفذ الأمر.

 بوابة الالتزام -a -Dry-run 

استخدام خيار الالتزام -a للمرحلة والالتزام في خطوة واحدة

الملفات مرتبة وملتزمة لنا.

الالتزام بفرع مختلف

إذا قمت بإجراء بعض التغييرات على الملفات في دليل العمل الخاص بك ثم أدركت أنك لم تسحب الفرع الصحيح ، فأنت بحاجة إلى الحصول على تغييراتك في الفرع الصحيح دون التأثير على الفرع الحالي.

ليس لدى Git أمر للالتزام بفرع مختلف. لكن يمكنك تصحيح هذا الموقف بقليل من البراعة.

سنستخدم الأمر Git stash لعمل نسخة من التغييرات. ثم سوف نتحقق من الفرع الصحيح ونطبق التغييرات من المخبأ. لتطبيق التغييرات المخبأة ، نستخدم الأمر pop بدلاً من الأمر apply . يطبق أمر pop التغييرات ويزيلها أيضًا من المخبأ.

لقد أجرينا بعض التغييرات في فرع المحلل new-parser لمستودعنا. كان يجب أن تكون مصنوعة في فرع classic-parser .

 بوابة المخبأ
 بوابة الخروج Classic-parser
 بوابة خبأ البوب 

إخفاء التغييرات ، والتحقق من فرع ، وتطبيق التغييرات من المخبأ

يمكننا الآن تنفيذ commit وتحديث هذا الفرع.

 git الالتزام -a -m "تمت إضافة وظائف المحلل اللغوي المسبق" 

تنفيذ التغييرات التي تم استردادها من المخبأ

إذا عدنا إلى فرع new-parser ، يمكننا أن نرى أنه محدث ، مما يعني أنه قد تمت إزالة التغييرات من دليل العمل الخاص بك ، ومستودعك وملفاتك متزامنة.

 بوابة الخروج المحلل اللغوي الجديد
 حالة بوابة 

التحقق من حالة الفرع للتأكد من تحديثه

ذات صلة: كيفية تحديث وصيانة فروع Git المنفصلة

إجراء تغييرات على الالتزامات

إذا كنت بحاجة إلى تحسين رسالة الالتزام - ربما تكون قد اكتشفت خطأ إملائيًا فيها - أو نسيت ترتيب ملف كان يجب تضمينه في الالتزام ، فيمكنك استخدام الخيار --amend لوضع الأمور في نصابها الصحيح. التحذير هو أنه لا ينبغي استخدام هذا في الالتزامات التي تم دفعها إلى مستودع بعيد.

في رسالتنا الأخيرة للالتزام ، كان يجب أن تكون كلمة "Fraze" عبارة عن "عبارة". إذا استخدمنا git log يمكننا رؤية هذا.

سجل Git بنوع مميز

لتصحيح هذا ، سنستخدم الخيار --amend مثل هذا.

 git الالتزام - تعديل -m "تعريف العبارة المحسن" 

استخدام خيار الالتزام - تعديل لتصحيح رسالة الالتزام

إذا استخدمنا git log مرة أخرى ، يمكننا أن نرى أن الالتزام القديم قد تم استبداله بواحد جديد مع رسالة الالتزام المصححة.

يُظهر سجل Git رسالة التنفيذ المصححة

إذا أردنا إضافة ملف نسينا تنظيمه ، فيمكننا الالتزام بهذا الملف بحيث يظهر كجزء من الالتزام السابق.

سنستخدم add في ترتيب الملف ، ثم نلتزم بخيار --amend . يعني خيار --no-edit أننا لسنا بحاجة إلى تقديم رسالة التزام جديدة. يتم الاحتفاظ برسالة الالتزام السابقة.

 بوابة إضافة jibber.c
 بوابة الالتزام - تعديل - عدم التحرير 

ربط ملف بالالتزام السابق

إزالة التغييرات من الالتزام

إذا قمت عن غير قصد بتنظيم وتنفيذ ملف لم تكن تنوي القيام به ، فيمكنك إزالة هذا الملف من الالتزام باستخدام أمر reset . سنعيد ضبط الالتزام إلى منطقة التدريج ، أو الفهرس. ثم سنزيل الملف ونعيد تنفيذ بقية الملفات.

لإعادة تعيين آخر التزام إلى منطقة التدريج ، نستخدم الأمر reset --soft . HEAD~ هو اختصار لعبارة "الالتزام وراء الجدول الزمني للالتزام برأس المشروع" ، أو باللغة الإنجليزية ، "الالتزام الأخير".

 إعادة تعيين بوابة - رأس ناعم ~ 

إرسال آخر التزام إلى منطقة التدريج

لإزالة الملف الذي لم يكن يجب تضمينه ، نستخدم الأمر reset --mixed . يؤدي هذا إلى إعادة تعيين تلك التغييرات مرة أخرى إلى دليل العمل ، وإعادة إنشاء الملف المعدل كملف غير مُدرج وغير مُلتزم به.

 إعادة تعيين بوابة - jibber.c مختلط 

إزالة ملف من منطقة التدريج Git

نحتاج إلى الالتزام بالملفات الأخرى المتبقية في الفهرس.

 git الالتزام -m "التعديلات التجريبية" 

تنفيذ الملفات المتبقية في منطقة التدريج

يتم إعادة الالتزام بالملفين الآخرين اللذين كانا في الالتزام الأصلي بالنسبة لنا.

ذات صلة: كيفية الإصلاح أو التحرير أو التراجع عن التزامات Git (تغيير سجل Git)

التراجع عن التزام كامل

أحيانًا يكون التراجع عن التزام كامل أسهل ما يمكن فعله. إنه يعيد دليل العمل والمستودع إلى الحالة التي كانا عليها قبل الالتزام.

نحتاج إلى استخدام المعرف المرجعي المجزأ للالتزام. يمكننا إيجاد هذا باستخدام git log :

تم تمييز سجل Git مع معرف الالتزام

انسخ هذا المرجع واستخدمه في أمر revert :

 بوابة العودة e5bd4560aef8164c6ca9d6d4620b9db7f66aecc8 

التراجع عن الالتزام المحدد بواسطة معرف الالتزام الخاص به

سيؤدي هذا إلى فتح المحرر الافتراضي الخاص بك حتى تتمكن من تحرير رسالة التراجع. هناك رسالة افتراضية تم إدخالها لك. يمكنك إما استخدام هذا ، أو تعديله حسب رغبتك.

تحرير رسالة العودة مع تمييز الرسالة الافتراضية

عندما تكون سعيدًا برسالة التراجع ، احفظ الملف واخرج من المحرر. في nano ، يمكنك القيام بذلك باستخدام "Ctrl + O" و "Ctrl + X".

إجراء التراجع المكتمل ، والتراجع عن الالتزام بالكامل

باستخدام git log مرة أخرى ، يمكننا أن نرى أنه تمت إضافة التزام جديد يلغي التغييرات في الالتزام الذي تم إرجاعه.

سكين الجيش السويسري جيت

من الواضح أن commit هو أحد أهم أوامر Git. يمكن أن تفعل الكثير ، لذلك هناك الكثير لنتعلمه. يستغرق التعامل مع ميزاته الأقل استخدامًا وقتًا طويلاً. عندما تحتاج إلى تصحيح خطأ - في الوقت الحالي - ستكون سعيدًا لأنك أعددت مسبقًا.

ذات صلة: كيفية استخدام Git merge