مسار تعلّم

تعلم git: خطة دراسة وتدريبات ووثائق وتطبيق عملي

آخر تحديث: · Skillaria.Top

يُفضَّل تعلم Git في أربع مراحل: الدورة الأساسية (init وadd وcommit وlog)، ثم الفروع والدمج، ثم المستودعات البعيدة والعمل الجماعي، ثم التراجع عن الأخطاء والأدوات المتقدمة. وعادةً يحتاج الوصول إلى مستوى عملي واثق من 2 إلى 4 أسابيع من التدرب المنتظم على مستودع شخصي.

يُتعلَّم Git بالممارسة لا بالقراءة. ولكي تعمل بثقة في فريق تكفي نحو عشرين أمراً وفهم ثلاث أفكار: الـ commit لقطة للمشروع، والفرع مؤشر إلى commit، والمستودع البعيد نسخة أخرى من التاريخ. فيما يلي خطة تعلم Git مقسمة إلى مراحل، مع تمارين ومصادر مجانية ومعايير تعرف بها أنك أنهيت المرحلة.

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

لماذا يُتعلم Git بشكل منظم

كثيرون يعيشون سنوات بخمسة أوامر منسوخة من تعليمات شخص آخر، ويذعرون عند أول تعارض أو عند ظهور «detached HEAD». والسبب في الغالب واحد: لا يوجد نموذج ذهني، فالشخص لا يفهم ما الذي يغيّره الأمر في التاريخ وفي الملفات.

التعلم المنظم يعود بالفائدة بسرعة. تتوقف عن الخوف من التجريب لأنك تعرف كيف تتراجع؛ وتحل التعارضات بهدوء؛ وتحافظ على تاريخ منظم يراه المراجعون وأصحاب العمل. ويُسأل عن Git في المقابلات تقريباً في كل تخصص تقني، من الواجهات الأمامية إلى DevOps وتحليل البيانات.

المرحلة 1. الأساسيات: المستودع والـ index والـ commit

هدف المرحلة الأولى أن تفهم الدورة الأساسية والمناطق الثلاث في Git: مجلد العمل، والـ index، والمستودع. وتستغرق نحو 2 إلى 4 أيام بمعدل ساعة يومياً.

  • التثبيت والإعداد الأولي: git config --global user.name وuser.email، والفرع الافتراضي main.
  • إنشاء مستودع: git init.
  • دورة git status ← git add ← git commit؛ والإضافة الانتقائية git add -p.
  • عرض التاريخ: git log --oneline وgit diff وgit diff --staged وgit show.
  • ملف .gitignore: ما الذي لا ينبغي أن يدخل المستودع.

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

تعتبر المرحلة مكتملة إذا استطعت أن تقول دون مساعدة ما الفرق بين ناتج git diff وgit diff --staged، وأن تعمل commit لجزء من الملفات المعدَّلة فقط.

المرحلة 2. الفروع والدمج

الفروع قلب Git وأكبر مصدر للخوف عند المبتدئين. والمهم هنا ليس حفظ الأوامر، بل أن تتعلم تخيّل مخطط الـ commits. تخصص لهذه المرحلة نحو أسبوع.

  • الإنشاء والتبديل: git branch وgit switch وgit switch -c.
  • ما هو HEAD، وحالة detached HEAD.
  • الدمج: git merge، والدمج بالتقديم السريع (fast-forward) ودمج commit، والخيار --no-ff.
  • التعارضات: علامات <<<<<<< و>>>>>>>، وgit merge --abort.
  • العرض المرئي: git log --oneline --graph --all.

تمرين. أنشئ فرعين من main وعدّل في كل منهما السطر نفسه من ملف واحد. ادمجهما واحداً تلو الآخر، وستحصل على تعارض فتحله. كرر ذلك حتى يصبح الأمر مملاً.

في هذه المرحلة يساعد أكثر من غيره مدرّب Git التفاعلي، الذي سنذكره لاحقاً. فهو يعرض المخطط بعد كل أمر، ويبني الحدس بسرعة.

المرحلة 3. المستودعات البعيدة والعمل الجماعي

الهدف أن تتعلم العمل مع الخادم كما يفعل الفرق. ستحتاج حساباً على GitHub أو GitLab أو أي منصة Git أخرى. وتستغرق المرحلة نحو أسبوع.

  • الربط والاستنساخ: git remote add وgit clone، والدخول بمفتاح SSH.
  • المزامنة: git push وgit push -u وgit fetch وgit pull والفرق بينها.
  • الفروع المتتبَّعة عن بُعد مثل origin/main.
  • الـ forks وفروع الميزات وطلبات الدمج مع المراجعة البرمجية.
  • سير العمل الجماعي: GitHub Flow وGit Flow وtrunk-based development.

تمرين. اعمل على مستودع واحد من «جهازين»: استنسخه في مجلدين مختلفين. نفّذ commits في الأول وادفعها، ثم اسحبها في الثاني. واصنع موقفاً يُرفض فيه push لأن الخادم تقدم، وافهم السبب.

git clone git@github.com:you/sandbox.git copy-a
git clone git@github.com:you/sandbox.git copy-b
cd copy-a && echo "من A" >> notes.txt && git commit -am "تعديل من A" && git push
cd ../copy-b && echo "من B" >> notes.txt && git commit -am "تعديل من B"
git push          # rejected: الخادم تقدم
git pull          # نحصل على تعديل A، ونحل التعارض في notes.txt
git push

هذا السيناريو القصير يحاكي الموقف الأكثر شيوعاً في الفريق. افحص ناتج كل أمر: لماذا رُفض push، وماذا ظهر في origin/main بعد fetch، ومن أين جاء commit الدمج. ثم كرر الأمر نفسه باستخدام git pull --rebase وقارن المخططين عبر git log --oneline --graph --all.

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

المرحلة 4. التراجع عن الأخطاء

تحوّل هذه المرحلة Git من مصدر قلق إلى شبكة أمان. وتستغرق 3 إلى 5 أيام.

  • git restore وgit restore --staged: التراجع في الملفات وفي الـ index.
  • git commit --amend: لتصحيح آخر commit.
  • git reset بأوضاع --soft و--mixed و--hard.
  • git revert: تراجع آمن عن commit منشور.
  • git reflog: استرجاع الـ commits «المفقودة».

تمرين. نفّذ عدة commits، ثم شغّل git reset --hard HEAD~3 واسترجعها عبر reflog. وتراجع عن commit في فرع «مشترك» باستخدام revert وانظر كيف يظهر ذلك في التاريخ.

المرحلة 5. الأدوات المتقدمة

تُتقن هذه الأدوات حين تحتاجها، لكن من المفيد أن تعرف وجودها مسبقاً.

الأداةمتى تحتاجها
git rebase وgit rebase -iتاريخ خطي، وتنظيف الـ commits قبل طلب الدمج
git stashتبديل عاجل دون commit لعمل غير مكتمل
git cherry-pickنقل commit واحد، مثلاً إصلاح طارئ
git tagتمييز إصدارات الإطلاق
git bisectإيجاد الـ commit الذي كسر الكود
git worktree، git submoduleعدة نسخ عمل؛ ومستودعات متداخلة

مدرّبات Git: أين تتدرب

ميزة المدرّب أنه يوفر بيئة تجريبية آمنة ويُظهر النتيجة فوراً. وفيما يلي بعض الخيارات المجانية:

  • Learn Git Branching (learngitbranching.js.org) — أفضل مدرّب للفروع. فيه مراحل بمهام، ومخطط commits متحرك، وهو متاح بعدة لغات. ويغطي commit وbranch وmerge وrebase وcherry-pick وrebase التفاعلي والعمل مع المستودعات البعيدة.
  • Oh My Git! — لعبة مجانية مفتوحة المصدر تُعرض فيها أوامر Git على بطاقات، بينما يعمل Git حقيقي خلفها.
  • مستودع تجريبي خاص بك — أقل الأدوات تقديراً. أنشئ مجلد git-sandbox وكسّر فيه كل شيء: لا شيء تخسره هنا.

المدرّبات تطور فهم المخطط جيداً، لكنها لا تغني عن مشروع حقيقي: ليس فيها ملفات فعلية ولا محرر ولا تعارضات في كود حقيقي ولا بيئة تطوير متكاملة. استخدمها كمكمّل.

وثائق Git والكتب

الوثائق الرسمية لـ Git موجودة على git-scm.com. وهناك أيضاً كتاب Pro Git لـ Scott Chacon وBen Straub، متاح مجاناً وبعدة لغات. وهو أفضل كتاب تعليمي عن Git: الفصول الثلاثة الأولى (الأساسيات والتفرع) ضرورية، أما فصل «Git من الداخل» فلمن يريد فهم نموذج البيانات كاملاً.

المساعدة المدمجة متاحة دائماً: git help <command> يفتح الدليل الكامل، وgit <command> -h يعرض قائمة مختصرة بالخيارات. وأسلوب الوثائق جاف لكنه دقيق، فاعتد على الرجوع إليها بدلاً من أول نتيجة في محرك البحث.

git help rebase        # الدليل الكامل
git switch -h          # ملخص الخيارات
git help -g            # قائمة الأدلة المفاهيمية (gitworkflows, gittutorial…)

وتفيد أيضاً الأدلة gittutorial وgiteveryday، فهي مرفقة مع Git القياسي وتُفتح عبر git help.

تعلم ذاتي أم دورة؟

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

الدورة مفيدة إذا أردت أن تقطع الطريق بسرعة وبترتيب: من أول commit إلى طلب دمج في مستودع حقيقي، مع مهام في كل خطوة. وعند اختيار دورة لا تنظر إلى مدتها، بل إلى نسبة التطبيق فيها: هل فيها تمارين على التعارضات والتراجع والعمل الجماعي ومشروع نهائي؟

كم من الوقت يحتاج تعلم Git؟

المستوىما الذي تستطيعهالمدة بمعدل ساعة يومياً
أساسيالـ commits والتاريخ و.gitignore3 إلى 5 أيام
عمليالفروع والتعارضات وpush/pull وطلبات الدمجمن أسبوعين إلى 3 أسابيع
واثقالتراجع عن الأخطاء وrebase وreflog وسير عمل الفريقمن شهر إلى شهرين مع ممارسة حقيقية

الأرقام تقريبية، والمنتظم هو الحاسم: ساعة كل يوم تعطي أكثر من ماراثون في عطلة نهاية الشهر.

أخطاء شائعة عند تعلم Git

  • التعلم عبر الواجهات الرسومية فقط. العملاء الرسوميون مريحون لكنهم يخفون النموذج. ابدأ بسطر الأوامر، ثم اختر الأداة التي تناسبك.
  • حفظ الخيارات عن ظهر قلب. احفظ الأفكار؛ فالخيارات موجودة دائماً في -h.
  • الخوف من الكسر. ما لم تنفذ reset --hard وتسترجع، لن تعرف أن Git يحميك.
  • تجاهل المستودعات البعيدة. Git المحلي دون push وpull وطلبات الدمج يمثل نصف المهارة.
  • commits باسم «fix» و«update». الأسهل أن تتعود على كتابة رسائل مفهومة منذ البداية.

مشروع نهائي للتثبيت

أفضل اختبار هو محاكاة تطوير جماعي. أنشئ مستودعاً، واحمِ فرع main من الدفع المباشر، وادعُ زميلاً أو اعمل من حسابين. كل مهمة تكون فرع ميزة منفصلاً وطلب دمج مع مراجعة؛ وتسبب تعارضاً مرة على الأقل، وتتراجع عن commit فاشل مرة عبر revert، وتضع وسماً (tag) لإصدار.

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

الخلاصة

التعلم الفعّال لـ Git يسير بالترتيب: الدورة الأساسية، ثم الفروع، ثم العمل مع الخادم، ثم التراجع عن الأخطاء، وأخيراً الأدوات المتقدمة. المدرّب يساعدك على رؤية المخطط، وكتاب Pro Git والوثائق الرسمية تمنحانك العمق، ومستودعك التجريبي ومشروع الفريق يحولان المعرفة إلى مهارة. وهذا هو المسار نفسه من git init إلى طلب دمج في المشروع النهائي.

الأسئلة الشائعة

هل يمكن تعلم Git في يوم واحد؟

في يوم واحد يمكن إتقان الدورة الأساسية: init وadd وcommit وlog وpush. أما العمل بثقة مع الفروع والتعارضات والتراجع فيحتاج إلى أسابيع من التدريب.

هل يلزم معرفة البرمجة لتعلم Git؟

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

هل توجد وثائق Git بالعربية؟

المرجع الرسمي للأوامر على git-scm.com بالإنجليزية، لكن يوجد كتاب Pro Git مترجماً إلى عدة لغات. ويدعم Learn Git Branching لغات متعددة.

ماذا أتعلم بعد Git؟

الخطوة المنطقية التالية هي CI/CD (مثل GitHub Actions وGitLab CI) والمراجعة البرمجية وعمليات الفريق، وفي DevOps البنية التحتية ككود، وهي أيضاً تُحفظ في Git.

تعلّم هذا الموضوع بالفيديو

يُشرح هذا الموضوع بالتفصيل مع التطبيق العملي في دورة «Git من الصفر إلى مطور واثق».

الانتقال إلى الدورة