كتابة القصص الخاصة بك مع git

مرحبًا بالجميع 🙂 قبل متابعة نصوص قائمة الطلبات ، أود الاحتفال بإصدار git 2.16 من خلال شكر كل من أرسل التصحيح وكل مستخدم ، في المجموع كان لدينا 4000 سطر بين التحديثات والتصحيحات الذي لا يشيد بإصداري الأول ، لكنه يتحدث عن لطفك 🙂 شكرًا لك! الآن ، سأخبرك بسر صغير ، حتى الآن لم يكن هناك وقت لم أجلس فيه لأكتب مقالًا وفكرت كثيرًا فيه ، وعادة ما أكتب فقط على التوالي ، ثم تأخذ السحلية الطيبة اللطف صحح أخطائي في الكتابة 🙂 لذا شكرًا له أيضًا.

ليس هذا هو الأفضل عندما نتحدث عن كتابة المقالات ، من المفترض أن يكون لها هدف وبناء هيكل ، وتمييز النقاط الصغيرة والمراجعات وما إلى ذلك ... الآن ، هذا لا ينطبق فقط على المدونات بشكل عام ، ولكنه ضروري في البرنامج الذي يتظاهر بأنه جيد 🙂 لهذه المهمة ، وبعد بعض المشاكل مع برنامج التحكم في الإصدار الذي تم استخدامه في تطوير kernel قبل بضع سنوات ، وُلد git ؟؟؟؟

أين تتعلم git?

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

ماذا تفعل git؟

تم تصميم Git ليكون سريعًا وفعالًا وبسيطًا ويدعم كميات كبيرة من المعلومات ، ففي النهاية قام مجتمع kernel بإنشائه لبرامجهم ، والتي تعد واحدة من أكبر الأعمال المشتركة للبرمجيات الحرة في العالم ولديها المئات من المساهمات في الساعة في قاعدة رمز تتجاوز مليون سطر.

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

مشروع حسابي صغير

ستكون الحسابات الحسابية عبارة عن برنامج سيجد مربعات رقم معين ، وسنفعله في C وسيكون بسيطًا قدر الإمكان ، لذلك لا تتوقع مني الكثير من الفحوصات الأمنية. أولاً سننشئ مستودعًا ، سأفعل ذلك مع Github لقتل عصفورين بحجر واحد:

خاصة. كريستوفر دياز ريفيروس

لقد أضفنا بضعة أشياء بسيطة مثل الترخيص (مهم جدًا إذا كنت تريد حماية عملك ، في حالتي ، أجبرهم على مشاركة النتائج إذا كانوا يريدون استخدامها كأساس: P)

الآن دعنا نذهب إلى محطتنا العزيزة ، git clone هو الأمر المسؤول عن تنزيل المستودع الموجود في url تعيين وإنشاء نسخة محلية على جهاز الكمبيوتر الخاص بنا.

خاصة. كريستوفر دياز ريفيروس

الآن دعنا نتحقق من git log ما حدث في تاريخ مشروعنا:

هنا لدينا الكثير من المعلومات بألوان مختلفة - لنحاول شرحها:

السطر الأصفر الأول هو "الباركود الالتزام" لكل التزام معرف فريد خاص به ، والذي يمكنك من خلاله القيام بالكثير من الأشياء ، لكننا سنحفظه لوقت لاحق. الآن لدينا HEAD سيليست و master أخضر. هذه هي "مؤشرات" وظيفتها هي الإشارة إلى الموقع الحالي لتاريخنا (HEAD) والفرع الذي نعمل عليه على حاسوبنا (master).

origin/master هو نظير الإنترنت ، origin هو الاسم الافتراضي الذي تم تخصيصه لنا URL، master هو الفرع الذي تعمل فيه ... لتبسيط الأمر ، أولئك الذين لديهم / هم أولئك الذين ليسوا في فريقنا ، ولكنهم يشيرون إلى ما هو موجود على الإنترنت.

ثم لدينا المؤلف والتاريخ والوقت وملخص الالتزام. هذه مراجعة صغيرة لما حدث في تلك المرحلة من التاريخ ، وهي مهمة جدًا في العديد من المشاريع وهناك الكثير من المعلومات المدانة. دعنا نلقي نظرة فاحصة على ما حدث في الالتزام بالأمر git show <código-de-commit>

خاصة. كريستوفر دياز ريفيروس

يأخذنا الأمر git show إلى هذه الشاشة بتنسيق تصحيح ، حيث يمكنك رؤية ما تمت إضافته وما تمت إزالته (إذا تمت إزالة شيء ما) في ذلك الوقت من التاريخ ، حتى الآن يوضح لنا فقط أن السجلات .gitignore,README.mdLICENSE.

الآن دعنا نبدأ العمل ، لنكتب ملفًا سننشئ أول معلم في تاريخنا 😀:

خاصة. كريستوفر دياز ريفيروس

باختصار ، سنقوم بإنشاء برنامج يوضح لنا عدد الوسائط التي تم تمريرها عند تنفيذه ، بسيط 🙂

خاصة. كريستوفر دياز ريفيروس

كان ذلك سهلاً - الآن دعنا نرى الأمر المفيد التالي: git status

خاصة. كريستوفر دياز ريفيروس

قام بعض الروح الطيبة بترجمة git لتسهيل متابعتها ، وهنا لدينا الكثير من المعلومات المفيدة ، ونعلم أننا في الفرع الرئيسي ، ويتم تحديثنا مع origin/master(فرع جيثب) ، لدينا ملفات لم يتم تعقبها! ولإضافتها علينا أن نستخدمها git add، دعنا نجرب 🙂

خاصة. كريستوفر دياز ريفيروس

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

خاصة. كريستوفر دياز ريفيروس

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

خاصة. كريستوفر دياز ريفيروس

الآن سنرى تاريخ مشروعنا مع git log

خاصة. كريستوفر دياز ريفيروس

مرة أخرى في السجل ، يمكننا الآن أن نرى أن الخطين الأخضر والأحمر قد اختلفا ، وذلك لأنه في جهاز الكمبيوتر الخاص بنا ، نحن ملتزمون أعلى من تلك المخزنة على الإنترنت سنواصل العمل ، لنفترض الآن أنني أريد أن أظهر رسالة في حالة قيام المستخدم بوضع أكثر من وسيطة في البرنامج (مما قد يجعل الآلة الحاسبة مشوشة 🙂)

كما نرى ، نما برنامجنا كثيرًا 😀 ، والآن لدينا الوظيفة imprimir_ayuda() الذي يعرض رسالة حول كيفية استخدام الحسابات ، وفي الكتلة main() الآن نقوم بمراجعة مع if(شيء سنراه في برنامج تعليمي للبرمجة في وقت آخر ، في الوقت الحالي من الضروري فقط معرفة أنه إذا تم إدخال أكثر من وسيطتين في علم الحساب ، فإن البرنامج سينتهي ويتم عرض المساعدة. دعنا ننفذها:

خاصة. كريستوفر دياز ريفيروس

كما ترون ، الآن يطبع الرقم الذي تم تسليمه بدلاً من عدد الحجج ، لكنني لم أخبركم من قبل 🙂 للفضول echo $? يظهر كود الخروج لآخر برنامج تم تنفيذه ، وهو 1 لأنه انتهى بالخطأ. الآن دعنا نراجع كيف تسير قصتنا:

خاصة. كريستوفر دياز ريفيروس

نحن نعلم الآن أننا نلتزم قبل Github ، هذا الملف main.c تم تعديله ، فلنقم بإنشاء الالتزام التالي عن طريق التنفيذ git add main.c  ثم git commit؟؟؟؟

خاصة. كريستوفر دياز ريفيروس

لقد أصبحنا الآن أكثر تحديدًا ، نظرًا لأننا قمنا بتنفيذ وظيفة وغيّرنا رمز التحقق من الصحة. الآن بعد أن تم حفظه ، سنراجع تغييرنا الأخير. يمكننا رؤيته مع git show HEAD

خاصة. كريستوفر دياز ريفيروس

الآن يمكنك رؤية الخطين الأحمر والأخضر ، لقد أضفنا المكتبة stdlib.h، وتعديل الكثير من التعليمات البرمجية وإضافة الوظيفة إلى قصتنا.

الآن سنرى السجل: (git log)

خاصة. كريستوفر دياز ريفيروس

يمكننا أن نرى أننا نتقدم مرتين على إصدار Github ، وسنوازن العلامة قليلاً 🙂 لذلك نستخدم git push origin master

مع هذا نقول ، أرسل التزاماتي إلى عنوان url origin على الفرع master

خاصة. كريستوفر دياز ريفيروس

تهانينا! الآن تغييراتك على جيثب ، ألا تصدقني؟ دعنا نراجعها 😉

خاصة. كريستوفر دياز ريفيروس

الآن لدينا 3 التزامات على جيثب 🙂

ملخص

لقد تطرقنا إلى الجوانب الأساسية ل git، الآن يمكنهم إنشاء سير عمل بسيط في مشاريعهم ، وهذا ليس شيئًا من بين مجموعة متنوعة من الأشياء التي يمكن القيام بها باستخدام git ، ولكنه بالتأكيد أكثر الأشياء العملية والأكثر يومية للمطور أو المدون. لم نصل إلى نهاية الآلة الحاسبة ، لكننا سنترك ذلك لوقت آخر 😉 شكرًا جزيلاً لك على الوصول إلى هنا وآمل أن تساعدك في المشاركة في عدة مشاريع 😀 تحياتي


اترك تعليقك

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها ب *

*

*

  1. المسؤول عن البيانات: ميغيل أنخيل جاتون
  2. الغرض من البيانات: التحكم في الرسائل الاقتحامية ، وإدارة التعليقات.
  3. الشرعية: موافقتك
  4. توصيل البيانات: لن يتم إرسال البيانات إلى أطراف ثالثة إلا بموجب التزام قانوني.
  5. تخزين البيانات: قاعدة البيانات التي تستضيفها شركة Occentus Networks (الاتحاد الأوروبي)
  6. الحقوق: يمكنك في أي وقت تقييد معلوماتك واستعادتها وحذفها.

  1.   بول قال

    مرحبًا ... لا أعرف إذا كنت كذلك ، لكن لا يمكنني رؤية الصور في هذا التقرير ...

    تحياتي

  2.   بول قال

    كانت مشكلة في متصفحي. عار على الانزعاج.

  3.   عالم Tecprog قال

    لا يزال يتعين علي قراءته بمزيد من التفاصيل ، فأنا مبتدئ.

  4.   غييرمو قال

    مقالة رائعة لتبدأ بـ git ، على الرغم من أنني أوصي بتدوين الملاحظات لفهم التفاصيل.
    هناك أمران لم يتم توضيحهما لي:
    ما هو الخيار ل أضف .gitignore Cعلى الرغم من أنني أعتقد أنني سأراه عندما أمارسه ،
    لماذا يجب عليك إعادة git add main.c قبل الالتزام التالي git ، هل تضيف main.c تخبر git لمقارنة هذا الملف بإصدار الشبكة؟ ألا تقارن تلقائيًا جميع الملفات المضافة للتتبع؟

    1.    كريساد قال

      مرحبًا Guillermo من الجيد أنك وجدت أنه من المفيد الإجابة على أسئلتك:

      .gitignore هو ملف يخبر git عن التنسيقات أو الأنماط التي يجب تجاهلها ، وفي هذه الحالة يؤدي تحديد C إلى تجاهل ملفات. لكل تجميع ومتابعة - يمكنك التحقق من العدد الكبير من التنسيقات التي تحذفها g في قالب C الخاص بها عن طريق إجراء cat أو باستخدام محرر نصوص.

      على الرغم من أن git سيتتبع كل ملف مضاف إلى شجرة العمل ، فمن الضروري تحديد الملفات التي ستدخل الالتزام التالي على وجه التحديد ، لإعطائك مثالاً ، دعنا نفترض أن عملك قادك إلى تعديل 5 ملفات مختلفة من قبل تكون قادرة على رؤية النتيجة. إذا كنت تريد أن تكون أكثر تحديدًا وتشرح ما يتم القيام به في كل منها ، فيمكنك فعل الأمر git add file1 ؛ git الالتزام؛ git add file2؛ git الالتزام… .3,4,5،XNUMX،XNUMX؛ بوابة الالتزام. بهذه الطريقة تكون قصتك نظيفة والتغييرات محددة جيدًا. وفي حال اضطررت إلى تغيير شيء ما ، أو الرجوع (مواضيع أكثر تقدمًا) ، يمكنك التراجع عن أشياء معينة أو إضافة أشياء محددة دون تغيير الباقي.

      أتمنى أن يساعدك تحياتي وشكرًا على السؤال

    2.    كريساد قال

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

      1.    غييرمو قال

        مثالي ، بالطبع يوضح.