Git Commit: فئة رئيسية
نشرت: 2023-02-26 من المتطلبات الأساسية لأي نظام تحكم في الإصدار تخزين إصدارات مختلفة من الملفات لك. في 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 config - global user.name
إذا كنت بحاجة إلى استخدام اسم مختلف في مستودع معين ، فقم بالتغيير إلى دليل المشروع واستخدم نفس الأمر بدون الخيار --global
.
git config user.name "McKay، David"
git config user.name
لدينا الآن اسم مستخدم افتراضي مختلف لهذا المستودع ، ولا يزال اسمنا العالمي مستخدمًا لمستودعات أخرى.
بطريقة مماثلة ، يمكننا تعيين عنوان بريد إلكتروني إما عالميًا أو لمستودع واحد من خلال تضمين أو حذف الخيار --global
.
git config user.email "[email protected]"
git config - global user.email "[email protected]"
git config user.email
git config - عالمي user.email
يتم الاحتفاظ بهذه الإعدادات في ملفات التكوين. يتم الاحتفاظ بإعدادات Git العامة في "~ / .gitconfig" ، ويتم الاحتفاظ بالإعدادات الخاصة بالمستودع في ملف ".git / config" الخاص بالمستودع.
يشير أمر commit
إلى هذه القيم ويستخدمها أثناء عمله.
باستخدام أمر التنفيذ
الاستخدام الأساسي لأمر commit
هو أخذ الملفات الموجودة في منطقة التدريج ، والمعروفة باسم الفهرس ، وتخزينها كالتزام في الفرع الحالي للمستودع.
التزام أساسي
لدينا مشروع بملف تم تغييره. سنستخدم الأمر add
لترتيب الملف ، ثم نلتزم به. نحن نستخدم الخيار -m
(إرسال رسالة) حتى نتمكن من تقديم وصف موجز للغرض من التغييرات. إذا لم نستخدم هذا الخيار ، فسيُطلب منا إرسال رسالة الالتزام أثناء حدوث ذلك. من الأنسب إضافة واحد في سطر الأوامر.
بوابة إضافة jibber.c
git الالتزام -m "نص المساعدة المحدّث"
إذا استخدمنا الأمر git log
، فيمكننا مراجعة تفاصيل الالتزامات ، بترتيب زمني ، مع وجود الالتزام الأحدث في أعلى القائمة.
سجل بوابة
يتم عرض الالتزامات في less
.
تم وضع علامة على الالتزام بالاسم وعنوان البريد الإلكتروني الذي قدمناه سابقًا ، ويتم تسجيل رسالة الالتزام أيضًا.
ملفات التدريج التلقائي
يمكن أن يستغرق تنظيم العديد من الملفات بعض الوقت. طريقة مختلفة هي استخدام الخيار -A
(الكل) مع add
.
يقوم هذا تلقائيًا بمراحل جميع الملفات المعدلة جنبًا إلى جنب مع جميع الملفات التي لم يتم تعقبها حاليًا. تحترم مرحلة الملفات التي لم يتم تعقبها الإعدادات الموجودة في ملف ".gitignore" الخاص بك. لن يقوم Git بترتيب الملفات التي أخبرتها أنك لا تريد تضمينها. أخيرًا ، تتم إزالة الملفات الموجودة في الفهرس والتي لم تعد موجودة في دليل العمل من الفهرس.
من الواضح أن الخيار -A
يمكن أن يتسبب في حدوث الكثير مرة واحدة. يمنحك خيار --dry-run
معاينة للتغييرات دون إجرائها فعليًا.
git add -A-- تشغيل جاف
في مثالنا ، سيتم وضع ملفين موجودين معدلين ، وملفين جديدين. دعنا نمضي قدمًا ونستخدم الخيار -A
قبل أن نستخدم أمر commit
.
بوابة add -A
git الالتزام -m "التحليل المحسن"
يمكننا أن نرى أنه تم تغيير أربعة ملفات. اثنان منهم من الملفات التي تم إنشاؤها حديثًا ، والتي تم سردها.
الانطلاق والالتزام في نفس الوقت
يحتوي أمر commit
على خيار أحرف صغيرة -a
(الكل). يؤدي هذا إلى التدريج والتنفيذ للملفات في خطوة واحدة.
يقوم خيار commit -a
بالتعديل على الملفات الموجودة ، ويزيل الملفات من الفهرس إذا تمت إزالتها من دليل العمل الخاص بك. لا يقوم تلقائيًا بوضع الملفات التي لم يتم تعقبها.
مثل الأمر add
، يحتوي أمر التنفيذ على خيار --dry-run
يسمح لك بمعاينة إجراءاته قبل تنفيذه.
بوابة الالتزام -a -Dry-run
الآن دعنا ننفذ الأمر.
بوابة الالتزام -a -Dry-run
الملفات مرتبة وملتزمة لنا.
الالتزام بفرع مختلف
إذا قمت بإجراء بعض التغييرات على الملفات في دليل العمل الخاص بك ثم أدركت أنك لم تسحب الفرع الصحيح ، فأنت بحاجة إلى الحصول على تغييراتك في الفرع الصحيح دون التأثير على الفرع الحالي.
ليس لدى Git أمر للالتزام بفرع مختلف. لكن يمكنك تصحيح هذا الموقف بقليل من البراعة.
سنستخدم الأمر Git stash
لعمل نسخة من التغييرات. ثم سوف نتحقق من الفرع الصحيح ونطبق التغييرات من المخبأ. لتطبيق التغييرات المخبأة ، نستخدم الأمر pop
بدلاً من الأمر apply
. يطبق أمر pop
التغييرات ويزيلها أيضًا من المخبأ.
لقد أجرينا بعض التغييرات في فرع المحلل new-parser
لمستودعنا. كان يجب أن تكون مصنوعة في فرع classic-parser
.
بوابة المخبأ
بوابة الخروج Classic-parser
بوابة خبأ البوب
يمكننا الآن تنفيذ commit
وتحديث هذا الفرع.
git الالتزام -a -m "تمت إضافة وظائف المحلل اللغوي المسبق"
إذا عدنا إلى فرع new-parser
، يمكننا أن نرى أنه محدث ، مما يعني أنه قد تمت إزالة التغييرات من دليل العمل الخاص بك ، ومستودعك وملفاتك متزامنة.
بوابة الخروج المحلل اللغوي الجديد
حالة بوابة
ذات صلة: كيفية تحديث وصيانة فروع Git المنفصلة
إجراء تغييرات على الالتزامات
إذا كنت بحاجة إلى تحسين رسالة الالتزام - ربما تكون قد اكتشفت خطأ إملائيًا فيها - أو نسيت ترتيب ملف كان يجب تضمينه في الالتزام ، فيمكنك استخدام الخيار --amend
لوضع الأمور في نصابها الصحيح. التحذير هو أنه لا ينبغي استخدام هذا في الالتزامات التي تم دفعها إلى مستودع بعيد.
في رسالتنا الأخيرة للالتزام ، كان يجب أن تكون كلمة "Fraze" عبارة عن "عبارة". إذا استخدمنا git log
يمكننا رؤية هذا.
لتصحيح هذا ، سنستخدم الخيار --amend
مثل هذا.
git الالتزام - تعديل -m "تعريف العبارة المحسن"
إذا استخدمنا git log
مرة أخرى ، يمكننا أن نرى أن الالتزام القديم قد تم استبداله بواحد جديد مع رسالة الالتزام المصححة.
إذا أردنا إضافة ملف نسينا تنظيمه ، فيمكننا الالتزام بهذا الملف بحيث يظهر كجزء من الالتزام السابق.
سنستخدم add
في ترتيب الملف ، ثم نلتزم بخيار --amend
. يعني خيار --no-edit
أننا لسنا بحاجة إلى تقديم رسالة التزام جديدة. يتم الاحتفاظ برسالة الالتزام السابقة.
بوابة إضافة jibber.c
بوابة الالتزام - تعديل - عدم التحرير
إزالة التغييرات من الالتزام
إذا قمت عن غير قصد بتنظيم وتنفيذ ملف لم تكن تنوي القيام به ، فيمكنك إزالة هذا الملف من الالتزام باستخدام أمر reset
. سنعيد ضبط الالتزام إلى منطقة التدريج ، أو الفهرس. ثم سنزيل الملف ونعيد تنفيذ بقية الملفات.
لإعادة تعيين آخر التزام إلى منطقة التدريج ، نستخدم الأمر reset --soft
. HEAD~
هو اختصار لعبارة "الالتزام وراء الجدول الزمني للالتزام برأس المشروع" ، أو باللغة الإنجليزية ، "الالتزام الأخير".
إعادة تعيين بوابة - رأس ناعم ~
لإزالة الملف الذي لم يكن يجب تضمينه ، نستخدم الأمر reset --mixed
. يؤدي هذا إلى إعادة تعيين تلك التغييرات مرة أخرى إلى دليل العمل ، وإعادة إنشاء الملف المعدل كملف غير مُدرج وغير مُلتزم به.
إعادة تعيين بوابة - jibber.c مختلط
نحتاج إلى الالتزام بالملفات الأخرى المتبقية في الفهرس.
git الالتزام -m "التعديلات التجريبية"
يتم إعادة الالتزام بالملفين الآخرين اللذين كانا في الالتزام الأصلي بالنسبة لنا.
ذات صلة: كيفية الإصلاح أو التحرير أو التراجع عن التزامات Git (تغيير سجل Git)
التراجع عن التزام كامل
أحيانًا يكون التراجع عن التزام كامل أسهل ما يمكن فعله. إنه يعيد دليل العمل والمستودع إلى الحالة التي كانا عليها قبل الالتزام.
نحتاج إلى استخدام المعرف المرجعي المجزأ للالتزام. يمكننا إيجاد هذا باستخدام git log
:
انسخ هذا المرجع واستخدمه في أمر revert
:
بوابة العودة e5bd4560aef8164c6ca9d6d4620b9db7f66aecc8
سيؤدي هذا إلى فتح المحرر الافتراضي الخاص بك حتى تتمكن من تحرير رسالة التراجع. هناك رسالة افتراضية تم إدخالها لك. يمكنك إما استخدام هذا ، أو تعديله حسب رغبتك.
عندما تكون سعيدًا برسالة التراجع ، احفظ الملف واخرج من المحرر. في nano ، يمكنك القيام بذلك باستخدام "Ctrl + O" و "Ctrl + X".
باستخدام git log
مرة أخرى ، يمكننا أن نرى أنه تمت إضافة التزام جديد يلغي التغييرات في الالتزام الذي تم إرجاعه.
سكين الجيش السويسري جيت
من الواضح أن commit
هو أحد أهم أوامر Git. يمكن أن تفعل الكثير ، لذلك هناك الكثير لنتعلمه. يستغرق التعامل مع ميزاته الأقل استخدامًا وقتًا طويلاً. عندما تحتاج إلى تصحيح خطأ - في الوقت الحالي - ستكون سعيدًا لأنك أعددت مسبقًا.
ذات صلة: كيفية استخدام Git merge