إليك جميع أوامر Git التي استخدمتها الأسبوع الماضي ، وماذا يفعلون.

الصورة الائتمان: جيثب Octodex

مثل معظم المبتدئين ، بدأت في البحث عن StackOverflow للأوامر Git ، ثم نسخ الإجابات ، دون فهم ما فعلوه بالفعل.

صورة الائتمان: XKCD

أتذكر أنني كنت أفكر ، "ألن يكون الأمر جيدًا لو كانت هناك قائمة بأوامر Git الأكثر شيوعًا مع شرح لسبب أهميتها؟"

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

للحفاظ على الأمور عملية ، أقوم بإعداد هذه القائمة خارج أوامر Git الفعلية التي استخدمتها خلال الأسبوع الماضي.

يستخدم كل مطور تقريبًا Git ، وعلى الأرجح GitHub. ولكن ربما يستخدم المطور المتوسط ​​هذه الأوامر الثلاثة فقط 99٪ من الوقت:

بوابة إضافة - جميع
بوابة الالتزام -am ""
بوابة دفع أصل الرئيسي

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

سأبدأ بقائمة الأوامر الشائعة الاستخدام لتسهيل على المبتدئين فهم ما هو ممكن مع Git ، ثم الانتقال إلى الوظائف المتقدمة وأفضل الممارسات.

الأوامر المستخدمة بانتظام

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

بوابة الحرف الأول

إذا كنت تستخدم GitHub وكنت تدفع الرمز إلى Repo GitHub المخزّن على الإنترنت ، فأنت تستخدم repo remote. الاسم الافتراضي (المعروف أيضًا باسم الاسم المستعار) لهذا الريبو البعيد هو الأصل. إذا قمت بنسخ مشروع من جيثب ، فسيكون له أصل. يمكنك عرض هذا الأصل باستخدام الأمر git remote -v ، والذي سيدرج عنوان URL الخاص بـ repo البعيد.

إذا قمت بتهيئة Git repo الخاصة بك وترغب في ربطه بـ Repit لـ GitHub ، فسيتعين عليك إنشاء واحدة على GitHub ، ونسخ عنوان URL المقدم ، واستخدام أصل git command للإضافة عن بُعد ، وعنوان URL المقدم من GitHub استبدال "". من هناك ، يمكنك الإضافة والالتزام والدفع إلى الريبو البعيد.

يتم استخدام آخر واحد عندما تحتاج إلى تغيير المخزون عن بعد. دعنا نفترض أنك قمت بنسخ الريبو من شخص آخر وتريد تغيير المستودع عن بُعد من المالك الأصلي إلى حساب GitHub الخاص بك. اتبع نفس العملية مثل أصل الإضافة git ، باستثناء استخدام set-url بدلاً من ذلك لتغيير repo البعيد.

بوابة عن بعد الخامس
بوابة عن بعد إضافة أصل 
git عن بعد تعيين عنوان url 

الطريقة الأكثر شيوعًا لنسخ الريبو هي استخدام git clone ، متبوعًا بعنوان URL الخاص بـ repo.

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

بوابة استنساخ 

ستجد نفسك سريعًا باستخدام الفروع. إذا كنت لا تفهم الفروع الموجودة ، فهناك برامج تعليمية أخرى أكثر تعمقا ، ويجب عليك قراءة تلك الفروع قبل المتابعة (واحد هنا).

يسرد فرع بوابة القيادة جميع الفروع على جهازك المحلي. إذا كنت ترغب في إنشاء فرع جديد ، يمكنك استخدام git branch ، مع الذي يمثل اسم الفرع ، مثل "master".

ينتقل الأمر git checkout إلى فرع موجود. يمكنك أيضًا استخدام الأمر git checkout -b لإنشاء فرع جديد والتبديل إليه على الفور. يستخدم معظم الأشخاص هذا بدلاً من أوامر الفروع الفرعية والخروج.

فرع بوابة
فرع بوابة 
بوابة الخروج <اسم>
بوابة الخروج - ب <اسم>

إذا أجريت مجموعة من التغييرات على فرع ، دعنا نسميها "تطوير" ، وتريد دمج هذا الفرع في الفرع الرئيسي الخاص بك ، فأنت تستخدم الأمر git merge . سترغب في الخروج من الفرع الرئيسي ، ثم قم بتشغيل git merge develop لدمج التطوير في الفرع الرئيسي.

بوابة دمج 

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

بوابة سحب أصل 

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

حالة بوابة
بوابة فرق - ستات

الأوامر المتقدمة وأفضل الممارسات

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

يتيح لك الأمر git log مشاهدة سجل الالتزام. ستحتاج إلى استخدام هذا لمشاهدة سجل التزاماتك.

سوف تأتي التزاماتك مع رسائل وتجزئة ، وهي سلسلة عشوائية من الأرقام والحروف. مثال قد تبدو التجزئة مثل: c3d882aa1aa4e3d5f18b3890132670fbeac912f7

سجل بوابة

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

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

بوابة الخروج c3d88eaa1aa4e4d5f

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

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

بوابة دفع أصل إف

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

دعنا نقول أن لديك 4 تعهدات في تاريخك المحلي (لم يتم الدفع إلى GitHub) والتي ذهبت إليها ذهابًا وإيابًا. التزاماتك تبدو قذرة وغير حاسمة. يمكنك استخدام rebase لدمج كل تلك الالتزامات في التزام واحد موجز.

بوابة rebase ، أنا رئيس ~ 4

سيفتح الأمر أعلاه المحرر الافتراضي لجهاز الكمبيوتر الخاص بك (وهو Vim ما لم تقم بتعيينه على شيء آخر) ، مع العديد من الخيارات لكيفية تغيير التزاماتك. سيبدو مثل الرمز أدناه:

اختيار 130deo9 أقدم رسالة الالتزام
اختيار 4209fei ثاني أقدم رسالة الالتزام
اختيار 4390gne ثالث أقدم رسالة الالتزام
اختيار bmo0dne أحدث رسالة الالتزام

من أجل الجمع بين هذه ، نحتاج إلى تغيير خيار "الانتقاء" إلى "إصلاح" (كما تقول الوثائق الواردة في الكود) لخلط الالتزامات وتجاهل رسائل الالتزام. لاحظ أنه في vim ، تحتاج إلى الضغط على "a" أو "i" لتتمكن من تحرير النص ، وللحفظ والخروج ، تحتاج إلى كتابة مفتاح الهروب متبوعًا بـ "shift + z + z". لا تسألني عن السبب ، فهو كذلك.

اختيار 130deo9 أقدم رسالة الالتزام
إصلاح 4209fei ثاني أقدم رسالة الالتزام
إصلاح 4390gne ثالث أقدم رسالة الالتزام
إصلاح bmo0dne أحدث رسالة الالتزام

سيؤدي هذا إلى دمج جميع التزاماتك في الالتزام مع رسالة "أقدم رسالة التزام".

الخطوة التالية هي إعادة تسمية رسالة الالتزام. هذه مسألة رأي تمامًا ، لكن طالما اتبعت نمطًا ثابتًا ، فإن أي شيء تفعله جيد. أوصي باستخدام إرشادات الالتزام التي وضعتها Google for Angular.js.

من أجل تغيير رسالة الالتزام ، استخدم علامة التعديل.

بوابة ارتكاب - تعديل

هذا سيفتح أيضًا vim ، وقواعد تحرير النص وحفظه هي نفسها المذكورة أعلاه. لإعطاء مثال لرسالة الالتزام الجيد ، إليك رسالة تتبع القواعد الواردة في المبدأ التوجيهي:

الفذ: إضافة زر الخروج الشريط إلى صفحة المدفوعات
- إضافة زر شريط الخروج
- كتابة اختبارات الخروج

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

ملاحظة: يجب أن تتجنب إعادة توزيع ووقف الإلتزامات الخاصة بك إذا كنت تتعاون في مشروع ما ، وقد دفعت الكود إلى GitHub. إذا بدأت بتغيير تاريخ الإصدار تحت أنوف الأشخاص ، فقد ينتهي بك الأمر إلى جعل حياة الجميع أكثر صعوبة مع الأخطاء التي يصعب تتبعها.

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

Sam Corcos هو المطور الرئيسي والمؤسس المشارك لخرائط Sightline Maps ، وهي النظام الأساسي الأكثر سهولة للخرائط الطبوغرافية للطباعة ثلاثية الأبعاد ، بالإضافة إلى LearnPhoenix.io ، وهو موقع تعليمي متوسط ​​متقدم لبناء تطبيقات إنتاج قابلة للتطوير باستخدام Phoenix و React.