برنامج تعليمي كامل حول كيفية استخدام GitHub

هل بدأت مؤخرًا استخدام Git؟ أو ربما كنت تستخدمه لفترة من الوقت ولكن العديد من أسرارها لا تزال مربكة.

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

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

لهذا السبب قمت بإعداد هذا البرنامج التعليمي ، ليعلمك كيفية استخدام git بشكل صحيح حتى نتمكن جميعًا من الترميز!

تثبيت والإعداد

تثبيت

أول شيء أولاً ، علينا تثبيت بوابة لاستخدامها! يمكننا القيام بذلك بسرعة وسهولة باستخدام apt:

سودو عرضة تثبيت بوابة للجميع

الإعداد الأساسي

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

بوابة التكوين - العالمية user.name "اسم المستخدم"
git config --global user.email "email"

الألوان

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

بوابة التكوين - العالمية color.ui صحيح

التحكم في الإصدار الأساسي

تهيئة بوابة

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

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

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

إضافة وارتكاب

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

بوابة إضافة <ملف>
بوابة الالتزام -m "الالتزام الأول"

النسخ الاحتياطي عن بعد

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

مثال عام
بوابة النائية إضافة أصل \
https://github.com/user/repo.git
### مثال مع مستودع لي
بوابة النائية إضافة أصل \
https://github.com/GeorgeSeif/Semantic-Segmentation-Suite.git

ثم يمكنك المضي قدمًا ودفع الكود إلى GitHub ... فيولا! لقد قمت بنسخ رمزك احتياطيًا!

بوابة دفع أصل الرئيسي

العمل مع الملفات الخاصة بك

التحقق من الحالة

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

حالة بوابة $
# على سيد فرع
لا شيء لارتكاب (دليل العمل نظيفة)

إذا أضفت ملفًا جديدًا إلى مشروعك ولم يكن الملف موجودًا من قبل ، فعند تشغيل حالة $ git ، يجب أن تشاهد ملفك الذي لم يتم تتبعه مثل هذا:

حالة بوابة $
# على سيد فرع
# الملفات غير المقتبسة:
# (استخدم "git add  ..." لتضمين ما سيتم الالتزام به)
#
# اقرأ
لم تتم إضافة أي شيء للالتزام ولكن الملفات غير المسجلة موجودة (استخدم "git add" لتعقب)

هذا يجعل حالة git $ مفيدة حقًا لفحص سريع لما قمت بنسخه احتياطيًا بالفعل وما تملكه محليًا فقط.

ملف متقدم مضيفا

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

### إضافة ملفات واحدة تلو الأخرى
بوابة إضافة اسم الملف

### إضافة جميع الملفات في الدليل الحالي
بوابة إضافة -A

### إضافة جميع ملفات التغييرات في الدليل الحالي
بوابة إضافة.

### اختيار التغييرات المراد إضافتها (سيحصل هذا على كل التغييرات التي أدخلتها على ### ويمكنك تغيير "ص" أو "ن" التغييرات)
بوابة إضافة -P

يرتكب المتقدمة

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

### ارتكاب ملف (ملفات) على مراحل
### يستخدم هذا عادةً لرسائل الالتزام الأقصر
بوابة الالتزام -m "رسالة الالتزام"

### أضف ملفًا وارتكب في طلقة واحدة
git ارتكب اسم الملف -m 'message message'

### أضف ملفًا وارتكب ملفًا مرحليًا
بوابة الالتزام -am "إدراج رسالة الالتزام"

### تغيير آخر رسالة التزام
بوابة الالتزام - تعديل "رسالة التزام جديدة"

# الجمع بين سلسلة من يرتكب معا في واحد واحد
### يمكنك استخدام هذا لتنظيم تاريخ التزام فوضوي
بوابة rebase من أنا
### هذا سيمنحك واجهة على محررك الأساسي:
# الأوامر:
# p ، اختر = استخدام الالتزام
# r ، reword = استخدم الالتزام ، ولكن قم بتحرير رسالة الالتزام
# e ، تحرير = استخدام الالتزام ، ولكن توقف عن التعديل
# s ، الاسكواش = استخدام الالتزام ، لكن تمتزج بالالتزام السابق
# f ، fixup = like "squash" ، لكن تجاهل رسالة سجل الالتزام
# x ، exec = أمر تشغيل (بقية السطر) باستخدام shell

المتفرعة والاندماج

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

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

المتفرعة

إليك جميع الأشياء التي تحتاجها لإنشاء فرع والعمل فيه:

### إنشاء فرع محلي للعمل عليه
بوابة الخروج - ب branchname

### التبديل بين فرعين
بوابة الخروج branch_1
بوابة الخروج branch_2
### دفع الفرع المحلي الجديد إلى التحكم عن بُعد
بوابة دفع يو الأصل branch_2

### حذف فرع محلي - هذا لن يسمح لك بحذف فرع ### لم يتم دمجه بعد
git branch -d branch_2

### حذف فرع محلي - سيؤدي هذا إلى حذف فرع حتى لو لم يتم دمجه بعد!
فرع بوابة -D branch_2

### عرض جميع الفروع الحالية للمستودع ، بما في ذلك كلا الفروع المحلية والبعيدة. من الرائع معرفة ما إذا كان لديك بالفعل فرع ### لإضافة ميزة معينة ، خاصة في مشاريع ### الأكبر
بوابة فرع واحد

### عرض جميع الفروع التي تم دمجها في فرع ### الحالي ، بما في ذلك المحلية والبعيدة. عظيم لمعرفة من أين جاء كل رمزك من!
بوابة فرع واحد - مزيج

### عرض جميع الفروع التي لم يتم دمجها في فرع ### الحالي ، بما في ذلك المحلية والبعيدة
بوابة فرع واحد - لا دمج

### عرض جميع الفروع المحلية
فرع بوابة

### عرض جميع الفروع البعيدة
بوابة فرع ص

# Rebase الفرع الرئيسي في الفرع المحلي
git rebase أصل / ماجستير

# دفع الفرع المحلي بعد إعادة توجيه السيد إلى الفرع المحلي
دفع بوابة أصل + فرع

دمج

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

هيريس كيفية القيام بذلك:

### تأكد أولاً من أنك تبحث عن فرع رئيسي
بوابة الخروج سيد

### الآن دمج فرعك لإتقان
بوابة دمج الفرع

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

إصلاح الأخطاء والتراجع

الأخطاء تحدث ... ويحدث كثير من الأحيان مع الترميز! الشيء المهم هو أننا قادرون على إصلاحها.

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

### قم بالتبديل إلى إصدار رمز الالتزام الأخير
بوابة إعادة تعيين الرأس
git reset HEAD - filename # لملف معين
### قم بالتبديل إلى إصدار الكود قبل الالتزام الأخير
git reset HEAD ^ - اسم الملف
git reset HEAD ^ - اسم الملف # لملف معين
### العودة 3 أو 5 ارتكاب
بوابة إعادة تعيين HEAD ~ 3 - اسم الملف
git reset HEAD ~ 3 - اسم الملف # لملف معين
بوابة إعادة تعيين HEAD ~ 5 - اسم الملف
git reset HEAD ~ 5 - filename # لملف معين
### العودة إلى التزام محدد
### حيث "0766c053" هو معرف الالتزام
بوابة إعادة تعيين 0766c053 - اسم الملف
بوابة إعادة تعيين 0766c053 - اسم الملف # لملف معين
### كانت الأوامر السابقة هي ما يعرف بـ "إعادة تعيين". تتم إعادة تعيين رمز ### الخاص بك ، ولكن git ستظل تحتفظ بنسخة من الرمز الآخر ### في متناول يديك إذا احتجت إليها. من ناحية أخرى ، تخبر علامة --hard ### Git بالكتابة فوق جميع التغييرات في دليل العمل.
بوابة إعادة تعيين - hard 0766c053

نصائح وحيل مفيدة لجيت

لقد انتهينا جميعًا من الأشياء الرائعة! إليك بعض النصائح والحيل التي قد تجدها مفيدة لك لتحسين سير عملك!

يبحث

### يبحث عن أجزاء من السلاسل في الدليل
بوابة grep "شيء ما"

### يبحث عن أجزاء من السلاسل في دليل والمطبوعات -n ### خارج أرقام الأسطر حيث وجد git المطابقات
بوابة grep -n "شيء ما"

### يبحث عن أجزاء من السلسلة مع بعض السياق (بعض الخطوط
### قبل والبعض بعد "شيء" نحن نبحث عنه)
git grep -C <عدد الأسطر> "شيء ما"

### يبحث عن أجزاء من السلسلة ويظهر أيضًا خطوطًا قبل ذلك
git grep -B <عدد الأسطر> "شيء ما"

### يبحث عن أجزاء من السلسلة ويظهر أيضًا خطوطًا بعد ذلك
git grep -A <عدد الأسطر> "شيء ما"

رؤية من كتب ماذا

### عرض سجل تغيير ملف باسم المؤلف
بوابة اللوم "اسم الملف"

### عرض محفوظات تغيير ملف باسم المؤلف ### ومعرف التزام git
بوابة اللوم "اسم الملف" -l

تسجيل

### عرض قائمة بجميع عمليات الالتزام في المستودع. يعرض هذا الأمر ### كل ما يتعلق بالالتزام ، مثل معرف الالتزام والمؤلف والتاريخ ورسالة الالتزام ###.
سجل بوابة

### قائمة الإلتزامات التي تظهر رسائل الالتزام والتغييرات فقط
سجل بوابة ص

### قائمة من الالتزامات مع السلسلة المعينة التي تبحث عنها
بوابة الدخول -S "شيء"

### قائمة بالالتزامات حسب المؤلف
بوابة سجل - المؤلف "اسم المؤلف"

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

### عرض قائمة بالتعهدات في مستودع منذ يوم أمس
بوابة سجل - منذ = أمس

### يعرض سجل حسب المؤلف والبحث عن مصطلح محدد داخل رسالة الالتزام ###
git log --grep "term" - Author "name"

اقتراحات للقراءة

هل تحاول اقتحام وظيفة برمجة أو البحث عن ترقية وظيفتك الحالية؟ يحتوي Cracking the Coding Interview على أفضل أمثلة لسؤال مقابلة الترميز الشائعة وحلولها لشركات مثل Google و Microsoft و Amazon!

وفقط في المقدمة ، أنا أؤيد هذه المدونة التي تحتوي على روابط تابعة لـ Amazon للكتب العظيمة ، لأن مشاركة الكتب العظيمة تساعد الجميع! بصفتي مشاركًا في Amazon ، أكسب من عمليات الشراء المؤهلة.