Git من الصفر: إدارة الكود باحترافية من اليوم الأول
لو بتشتغل على مشروع وبتخاف تغير سطر واحد لحسن حاجة تتكسر، أو ملفاتك اسمها «نهائي» و«نهائي-بجد»، فالمقال ده معمول عشانك. هتتعلم Git من التثبيت لحد أول مشروع على GitHub — من غير حشو، ومن غير ما تحفظ أوامر مش فاهمها.
لو ملفات مشروعك اسمها «نهائي-v2»… عندك مشكلة
افتح أي مجلد مشروع عند مبتدئ، وهتلاقي المشهد ده: project-final.zip، project-final-v2.zip، project-final-v2-REALLY-FINAL.zip. كل نسخة اتعملت في لحظة خوف: «خليني أحفظ نسخة قبل ما أجرب الحاجة دي، لحسن تبوظ». والنتيجة؟ مجلد مليان نسخ، ومحدش عارف إيه الفرق بينهم، ولو سألت صاحبهم «النسخة الشغالة فين؟» هيحتاج عشر دقايق يدور.
المشكلة إن الطريقة دي مش بس فوضوية — دي خطيرة. نسخة واحدة تتمسح بالغلط، أو تنسى إنت غيرت إيه في أنهي نسخة، والمشروع كله يبقى في مهب الريح. والأسوأ: الطريقة دي بتخليك تخاف تجرب. كل تعديل جديد مخاطرة، وكل فكرة جديدة محتاجة «نسخة احتياطية» قبلها. الخوف ده هو اللي بيقتل التعلم، لأن البرمجة أصلًا تجربة وغلط وتصليح.
الحل مش إنك تبقى «منظم أكتر» — الحل إنك تستخدم أداة معمولة مخصوص للمشكلة دي. اسمها Git. وهي باختصار: شبكة أمان لمشاريعك. بتحفظ نسخة من شغلك كل مرة تقولها، وبتخليك ترجع لأي لحظة في تاريخ المشروع، وتجرب أي فكرة مجنونة من غير خوف، لأن الرجوع دايمًا ممكن.
بعد المقال ده هتعرف: تثبّت Git وتجهّزه، تبدأ مشروع وتحفظ نسخه، تشتغل بفروع من غير ما تكسر حاجة، ترفع شغلك على GitHub، وتصلح أي غلطة هتعملها. كل ده بأوامر هتفهمها مش هتحفظها.
ملاحظة صريحة قبل ما نبدأ: Git في الأول بيبان مخيف — أوامر إنجليزية وشاشة سودا ومصطلحات غريبة. ده طبيعي. بس الحقيقة إنك محتاج تفهم 5 مفاهيم و18 أمر بس عشان تشتغل باحترافية يومية. الباقي تفاصيل هتتعلمها لما تحتاجها. خلينا نبدأ بأهم سؤال.
إيه هو Git؟ (بجملة واحدة)
Git نظام بيحفظ نسخة من مشروعك كل مرة تقوله «احفظ»، وبيخليك ترجع لأي نسخة في أي وقت، وتشوف إيه اللي اتغير بين النسخ.
خلص التعريف. أي شرح أطول من كده في البداية تشتيت. بس فيه 3 نقط لازم تتثبت من أول يوم:
- Git بيشتغل على جهازك: مش محتاج إنترنت، مش محتاج حساب، مش محتاج حد. بتنزله وبتستخدمه على ملفاتك فورًا.
- Git بيحفظ «الفروق» مش النسخ الكاملة: لما تقوله احفظ، هو مش بينسخ المجلد كله — هو بيسجل إيه اللي اتغير بس. عشان كده سريع وخفيف مهما كبر المشروع.
- Git مش GitHub: دي أشهر لخبطة عند المبتدئين، وتستاهل جدول لوحدها.
| Git | GitHub |
|---|---|
| برنامج بتنزله على جهازك | موقع على الإنترنت |
| بيحفظ نسخ مشروعك محليًا | بيستضيف نسخة من مشروعك أونلاين |
| بيشتغل من غير إنترنت | محتاج إنترنت وحساب |
| هو الأساس اللي لازم تتعلمه الأول | مبني فوق Git — بيضيف مشاركة وتعاون |
| مثال: القلم اللي بتكتب بيه | مثال: المكتبة اللي بتحط فيها كتبك عشان الناس تشوفها |
الترتيب الصح: اتعلم Git الأول على جهازك، وبعدين ارفع على GitHub. اللي بيبدأ من GitHub من غير ما يفهم Git بيبقى زي اللي بيسوق عربية من غير ما يعرف الفرامل فين — ماشي، لحد أول مشكلة.
لأن العادة أهم من المهارة. اللي بيبدأ أي مشروع — حتى لو صفحة HTML واحدة — بأمر git init، بعد شهر بيبقى عنده تاريخ كامل لكل اللي اتعلمه، ومعرض أعمال حقيقي على GitHub. واللي «هيتعلم Git بعدين» غالبًا عمره ما بيتعلمه، وبيفضل خايف من أول مشروع حقيقي يشتغل عليه.
ثبّت Git وجهّزه في 5 دقائق
التثبيت أسهل مما تتخيل. اختار نظامك:
على ويندوز
نزّل المثبت من الموقع الرسمي git-scm.com، وشغّله، ودوس «التالي» على كل حاجة بالإعدادات الافتراضية. الإعدادات الافتراضية مناسبة للمبتدئ تمامًا — متغيرش حاجة مش فاهمها. بعد التثبيت هتلاقي عندك برنامج اسمه Git Bash — دي الشاشة السودا اللي هتكتب فيها الأوامر.
على ماك
افتح الـTerminal واكتب الأمر ده، والنظام هيعرض عليك تثبيت أدوات المطورين اللي جواها Git:
على لينكس
الإعداد الأول (مرة واحدة بس)
بعد التثبيت، افتح الـTerminal أو Git Bash واكتب الأمرين دول — بيقولوا لـGit اسمك وإيميلك عشان يتسجلوا على كل نسخة بتحفظها:
اتأكد إن كل حاجة تمام بالأمر ده:
الإيميل اللي بتكتبه هنا يفضل يكون نفس إيميل حساب GitHub اللي هتعمله بعدين. مش إجباري، لكنه بيخلي مساهماتك تظهر على حسابك بشكل صحيح بدل ما تظهر باسم مجهول.
أول مستودع: init وadd وcommit
كلمة «مستودع» (Repository) بتخوف ناس كتير، وهي أبسط مما تتخيل: مجلد عادي جواه مجلد مخفي اسمه .git بيحفظ تاريخ كل التغييرات. يعني أي مجلد مشروع عندك ممكن يبقى مستودع بأمر واحد.
خلينا نعملها عمليًا. افتح الـTerminal ونفذ الأوامر دي سطر سطر — ومتكملش قراءة قبل ما تجرب بنفسك:
خلصت. انت دلوقتي عندك أول commit — أول نسخة محفوظة في تاريخ مشروعك. لو فتحت الملف وغيّرت فيه أي حاجة وبوّظته، تقدر ترجع للنسخة دي في أي وقت. الإحساس ده — إنك تقدر تجرب أي حاجة من غير خوف — هو اللي Git بيبيعهولك.
رسالة الـcommit الكويسة بتتكتب إزاي؟
رسالة الـcommit هي اللي هتقراها بعد شهرين لما تسأل نفسك «أنا كنت بعمل إيه هنا؟». القواعد:
- فعل أمر في المضارع: «Add login page» مش «Added» ومش «login page». كأنك بتقول للمشروع: اعمل كده.
- قصيرة وواضحة: سطر واحد يوصف التغيير. لو محتاج تشرح أكتر، ده معناه إن الـcommit نفسه كبير زيادة.
- commit واحد = تغيير واحد: متحطش تعديل صفحة الدخول مع إصلاح خطأ في صفحة تانية في نفس الـcommit. كل commit فكرة واحدة.
Commit early, commit often. احفظ نسخ كتير صغيرة بدل نسخة واحدة ضخمة كل أسبوع. الـcommit الرخيص (سطر واحد واضح) هو اللي بينقذك لما تحتاج ترجع — لأنك هترجع خطوة صغيرة مفهومة مش قفزة مجهولة.
الحالات الثلاث: افهمها مرة واحدة وارتاح
أكبر لخبطة عند المبتدئين: «أنا عملت git add… ليه الملف متحفظش؟» أو «عملت تعديل… ليه git status بيقول مفيش حاجة؟». السبب إن Git عنده 3 حالات للملفات، ومعظم الأوامر بتنقل الملفات بين الحالات دي. افهم الصورة دي مرة واحدة، و90% من لخبطة Git هتختفي:
- مساحة العمل (Working Directory): ملفاتك زي ما هي على جهازك. أي تعديل بتعمله هنا Git شايفه بس لسه «مش متابعه» للحفظ.
- منطقة التجهيز (Staging Area): لما تعمل git add، انت بتقول: «الملفات دي جاهزة للحفظ في النسخة الجاية». دي مرحلة المراجعة — بصة أخيرة قبل الحفظ.
- المستودع (Repository): لما تعمل git commit، النسخة بتتحفظ رسميًا في تاريخ المشروع. دي النقطة اللي تقدر ترجع لها دايمًا.
ليه مرحلتين (add ثم commit) مش خطوة واحدة؟ عشان تتحكم في إيه بالظبط اللي يدخل النسخة. ممكن تعدل 5 ملفات، وتجهز 3 منهم بس للـcommit ده، وتسيب الاتنين التانيين للـcommit اللي بعده. التحكم الدقيق ده هو اللي بيخلي تاريخ مشروعك نظيف ومفهوم.
3 أوامر للمتابعة اليومية
قبل كل commit: شغّل git status ثم git diff –staged وراجع اللي هتحفظه سطر سطر. الدقيقتين دول بيمنعوا 90% من الـcommits الغلط — ملف نسيته، أو تعديل تجريبي دخل بالغلط، أو بيانات حساسة كانت هتتحفظ.
الفروع: اشتغل بحرية من غير ما تكسر حاجة
وصلنا لأقوى فكرة في Git — واللي بتفرقه عن أي طريقة نسخ يدوية. الفرع (Branch) هو نسخة موازية من مشروعك بتشتغل عليها بحرية كاملة، والنسخة الأصلية (الفرع الرئيسي main) بتفضل سليمة وشغالة.
مثال واقعي: موقعك شغال والعملاء بيستخدموه. عاوز تجرب تصميم جديد للصفحة الرئيسية. من غير Git: هتعدل على الملفات الحية وتدعي إن حاجة متتكسرش. مع Git: تعمل فرع جديد، تجرب فيه براحتك لأيام، ولو التصميم طلع وحش — تمسح الفرع كأن شيئًا لم يكن. ولو طلع حلو — تدمجه في النسخة الرئيسية بأمر واحد.
أوامر الفروع الأساسية
ملاحظة عن git switch: الأمر القديم كان git checkout ولسه شغال، لكن switch أوضح للمبتدئ لأنه مخصص للتنقل بين الفروع بس. استخدم switch وريح دماغك.
تعارض الدمج (Merge Conflict) — مش نهاية العالم
التعارض بيحصل لما انت وزميلك (أو انت نفسك في فرعين) تعدلوا نفس السطور في نفس الملف. Git مش عارف يختار أنهي تعديل، فبيوقف الدمج وبيقولك: «قرر انت». وده مش خطأ — ده Git بيحميك من إنه يختار غلط نيابة عنك.
لما يحصل تعارض، هتلاقي في الملف علامات زي دي:
الحل: افتح الملف، احذف العلامات، وخلّي النسخة النهائية اللي انت عاوزها (ممكن تدمج الاتنين يدويًا)، ثم:
اشتغل كل واحد في فرعه، وادمج كتير على فترات قصيرة بدل دمج ضخم كل شهر. التعارضات بتكبر مع حجم الفروق — دمج يومي صغير أسهل بكتير من دمج شهري مرعب.
GitHub: ارفع أول مشروع للإنترنت
دلوقتي عندك Git شغال على جهازك وبتحفظ نسخ محليًا. الخطوة اللي بعدها: GitHub — المكان اللي بترفع عليه مشاريعك عشان تبقى متاحة أونلاين: نسخة احتياطية بره جهازك، ومعرض أعمال يشوفه أي حد، ومنصة تعاون مع فريق.
اعمل حساب ومستودع على GitHub
- ادخل على github.com واعمل حساب مجاني (الحساب المجاني بيديك مستودعات خاصة غير محدودة — مفيش حاجة ناقصة للمبتدئ).
- دوس زر New repository (أو علامة + فوق).
- اكتب اسم المستودع بالإنجليزية بشرطات: my-first-project.
- اختار Public لو عاوزه يظهر في معرض أعمالك، أو Private لو مشروع شخصي.
- متعلّمش على Add a README file — لأن عندك مشروع جاهز على جهازك وعاوز ترفعه.
- دوس Create repository.
اربط مشروعك المحلي وارفعه
GitHub هيعرض لك أوامر جاهزة — انسخها ونفذها في مجلد مشروعك:
كلمة origin دي مجرد اسم مستعار لرابط المستودع البعيد — تقليد متعارف عليه، مش أمر سحري. و-u اختصار –set-upstream: بتربط فرعك المحلي بالفرع البعيد، عشان بعد كده تكتب git push بس من غير ما تحدد كل مرة.
الأوامر اللي هتستخدمها مع GitHub يوميًا
clone بتنسخ مشروع كامل أول مرة — بتستخدمها مرة واحدة لكل مشروع. pull بتجيب التحديثات بس لمشروع موجود عندك — بتستخدمها كل يوم. لخبطة الاتنين من أشهر أخطاء المبتدئين.
يومك الطبيعي مع Git: الـworkflow الذهبي
بعد ما تفهم المفاهيم، الشغل اليومي بيبقى روتين ثابت من 5 خطوات. احفظ الترتيب ده — هو اللي هتمشي عليه في كل مشروع:
| الخطوة | الأمر | إمتى؟ |
|---|---|---|
| 1. حدّث مشروعك | git pull | أول حاجة لما تبدأ شغل — عشان تشتغل على أحدث نسخة |
| 2. اشتغل عادي | — | عدّل ملفاتك في المحرر زي ما انت متعود، Git بيراقب في صمت |
| 3. راجع اللي اتغير | git status ثم git diff | قبل الحفظ — بصة سريعة تتأكد إن كل حاجة مقصودة |
| 4. جهّز واحفظ | git add . ثم git commit -m “رسالة واضحة” | كل ما تخلص فكرة واحدة مكتملة — مش آخر اليوم |
| 5. ارفع | git push | آخر اليوم أو كل ما تخلص جزء مهم — عشان النسخة الأونلاين تتحدث |
لاحظ إن git add . (بنقطة) بيجهز كل الملفات المتغيرة مرة واحدة. عملي وسريع، لكن للمبتدئ الأفضل في الأول يجهز ملف ملف (git add filename) لحد ما يتعود يراجع قبل الحفظ. السرعة تيجي بعد الدقة، مش قبلها.
لو قدرت تشرح لحد: «بعدل، وبعدين add للتجهيز، وcommit للحفظ، وpush للرفع» — يبقى فهمت 80% من Git العملي. الباقي تفاصيل بتتعلمها عند الحاجة.
دلّع نفسك: أسماء مختصرة للأوامر اللي بتكررها
بعد أسبوع من الاستخدام هتلاحظ إنك بتكتب git status وgit log –oneline عشرات المرات يوميًا. Git بيسمح لك تعمل أسماء مختصرة (aliases) — اختصارات شخصية بتتكتب مرة واحدة وتفضل معاك:
الأمر git lg بالذات يستاهل التجربة: بيرسم تاريخ مشروعك كشجرة، فبتشوف الفروع وهي طالعة وراجعة تندمج — الصورة اللي شرحناها بالكلام في قسم الفروع هتشوفها حية على مشروعك. ولو حابب الألوان أوضح، Git ملوّن افتراضيًا في معظم التثبيتات الحديثة، ولو مش ملوّن عندك فعّلها بأمر واحد: git config –global color.ui auto. تفاصيل صغيرة، لكنها بتخلي الشاشة السودا ألطف بكتير في أول أسابيعك.
جدول الأوامر المرجعي: 18 أمر لازم تعرفهم
ده الجدول اللي هترجع له كتير — احفظ المقال في مفضلتك. الأوامر مرتبة من الأكثر استخدامًا للأقل:
| الأمر | بيعمل إيه؟ | مثال |
|---|---|---|
| git init | يحوّل مجلد عادي لمستودع Git | git init |
| git status | يعرض حالة الملفات: إيه اتعدل وإيه اتجهز | git status |
| git add | ينقل ملفات لمنطقة التجهيز | git add index.html أو git add . للكل |
| git commit | يحفظ نسخة رسمية برسالة | git commit -m “Add hero section” |
| git log | يعرض تاريخ النسخ المحفوظة | git log –oneline للعرض المختصر |
| git diff | يعرض الفروق سطر سطر قبل الحفظ | git diff أو git diff –staged |
| git branch | يعرض الفروع أو ينشئ فرعًا جديدًا | git branch feature-x |
| git switch | يتنقل بين الفروع | git switch -c feature-x للإنشاء والانتقال معًا |
| git merge | يدمج فرعًا في الفرع الحالي | git merge feature-x |
| git clone | ينسخ مستودعًا كاملًا من رابط | git clone https://github.com/user/repo.git |
| git push | يرفع الـcommits للمستودع البعيد | git push -u origin main أول مرة |
| git pull | ينزّل التحديثات من البعيد ويدمجها | git pull |
| git remote | يدير الروابط للمستودعات البعيدة | git remote add origin <url> |
| git restore | يرجع ملفًا لآخر نسخة محفوظة (يلغي تعديلات) | git restore style.css |
| git reset | يلغي تجهيز ملفات أو يرجع لمستوى commit معين | git reset HEAD file.js |
| git revert | يعكس commit معين بـcommit جديد (آمن للشغل الجماعي) | git revert a3f9c1d |
| git stash | يخبي تعديلاتك مؤقتًا من غير commit | git stash ثم git stash pop للاسترجاع |
| git rm | يحذف ملفًا من المشروع ومن التتبع معًا | git rm old-file.txt |
متحاولش تحفظ الجدول ده — هتحفظه لوحده بالاستخدام. أول أسبوع هتحتاج أول 6 أوامر بس. الفروع هتحتاجها أول ما تبدأ تجربة منفصلة. أوامر الإصلاح هتحتاجها أول ما تغلط — وهيحصل، وده طبيعي.
إصلاح الكوارث: كل غلطة وليها حل
أجمل حاجة في Git إنه معمول عشان الإنسان اللي بيغلط — يعني انت. كل سيناريو خوف عندك، ليه حل بأمر واحد. خلينا نعدي على أشهر الكوارث:
1. عدّلت ملف وعاوز ترجع لآخر نسخة محفوظة
تحذير صريح: الأمر ده بيمسح تعديلاتك نهائيًا من غير رجعة. استخدمه وانت متأكد إنك مش محتاج التعديلات دي. لو مش متأكد — اعمل commit الأول وبعدين قرر.
2. عملت add لملف بالغلط وعاوز تلغيه من التجهيز
الأمر ده آمن تمامًا: بيلغي الـadd بس، والملف وتعديلاته زي ما هم.
3. عملت commit وعاوز تعدل رسالته
شرط مهم: مستخدموش على commit اترفع already واشتغل عليه حد تاني. تعديل التاريخ المنشور بيعمل لخبطة للفريق. على شغلك المحلي بس — آمن.
4. عملت commit غلط وعاوز ترجع عنه بأمان
ده الحل «المهذب»: بدل ما تمسح الغلطة من التاريخ، بتعمل عكسها رسميًا. التاريخ بيفضل واضح: غلطة حصلت، واتصلحت. الفرق الجوهرية بتفضل ده لأنه مش بيكسر شغل حد.
5. محتاج تبدل فرع بسرعة وشغلك لسه مخلصش
stash زي درج المكتب: بتحط فيه الورق المتنطور بسرعة عشان تنضف المكتب لضيف، وبعدين ترجعه. مفيد لما يطلب منك حد إصلاح عاجل وانت في نص شغل تاني.
6. ملفات مش عاوز Git يتابعها أصلًا
كل مشروع فيه ملفات مينفعش تدخل تاريخ النسخ: ملفات الإعدادات الشخصية، مجلدات المكتبات الضخمة (node_modules)، ملفات كلمات السر. الحل ملف اسمه .gitignore في جذر المشروع:
القاعدة: أي حاجة فيها أسرار أو أي حاجة بتتولد تلقائيًا مكانها في .gitignore مش في المستودع. كلمة سر اترفعت على GitHub بالغلط مشكلة حقيقية — والوقاية سطر واحد.
هتشوف الأمر ده في شروحات كتير: git reset –hard بيرجع المشروع كله لحالة commit معين وبيمسح كل التعديلات غير المحفوظة نهائيًا. قوي ومفيد، لكنه المقص اللي بيقطع من غير رجعة. للمبتدئ: افهمه، واحترمه، ومتستخدموش إلا وانت فاهم بالظبط إيه اللي هيتمسح.
الشغل مع فريق: Pull Request من غير رهبة
لحد دلوقتي كل شغلك فردي. لكن Git اتصمم أصلًا للشغل الجماعي — وهنا بيظهر الـPull Request (اختصارًا PR). الفكرة ببساطة: بدل ما تدفع شغلك مباشرة على النسخة الرئيسية، بتفتح «طلب» بيقول للفريق: «أنا خلصت الميزة دي في فرعي، راجعوها وادمجوها لو عجبتكم».
ليه النظام ده؟ لأنه بيحمي المشروع من 3 حاجات: كود مكسور يدخل النسخة الرئيسية، تعديلات محدش راجعها، وتعارضات تتدمج من غير ما حد ياخد باله. كل الشركات المحترمة بتشتغل كده — ففهمك للـPR من بدري بيجهزك لسوق الشغل الحقيقي.
دورة الـPull Request خطوة بخطوة
- انسخ المشروع (Fork): لو المشروع مش بتاعك، بتدوس Fork على GitHub — بيعمل نسخة من المستودع على حسابك انت.
- انسخ نسختك لجهازك: git clone لرابط النسخة بتاعتك.
- اعمل فرعًا للميزة: git switch -c add-login-page — اسم الفرع يوصف اللي هتعمله.
- اشتغل واحفظ وارفع: الـworkflow العادي (add → commit → push) على فرعك.
- افتح الـPull Request: على GitHub هتلاقي زر Compare & pull request — دوسه واكتب وصفًا واضحًا: إيه اللي اتعمل؟ وليه؟ وإزاي يتجرب؟
- المراجعة (Review): حد من الفريق بيراجع الكود، وممكن يطلب تعديلات — ده طبيعي ومش نقد شخصي، ده جزء من الشغل.
- الدمج (Merge): بعد الموافقة، الكود بيندمج في الفرع الرئيسي. مبروك — ساهمت في مشروع حقيقي.
أصحاب الشغل بيبصوا على الـPull Requests بتاعتك قبل ما يبصوا على شهاداتك. PR مكتوب كويس — بوصف واضح وcommits نظيفة — بيقول عنك: «ده حد بيعرف يشتغل ضمن فريق». ابدأ بمشاريع مفتوحة المصدر صغيرة محتاجة مساعدة، وهتلاقي فرص كتير مكتوب عليها good first issue.
GitHub كمعرض أعمال: الـREADME اللي بيبيعك
صفحة المستودع على GitHub أول حاجة بيشوفها أي حد بيزور شغلك — والـREADME هو واجهة المحل. مستودع من غير README زي محل من غير يافطة: الناس هتعدي من قدامه ومش هتدخل.
ملف README.md بيتكتب بصيغة Markdown البسيطة، وGitHub بيعرضه تلقائيًا تحت الملفات. الـREADME الكويس بيجاوب 4 أسئلة:
- المشروع ده بيعمل إيه؟ — سطرين واضحين في الأول.
- شكله إيه؟ — صورة أو رابط حي للتجربة. مشروع من غير ما يتشاف زي أكل من غير ريحة.
- إزاي أشغله عندي؟ — خطوات التثبيت والتشغيل مرقمة.
- مبني بإيه؟ — التقنيات المستخدمة باختصار.
كام نصيحة إضافية لمعرض أعمال يشد العين: ثبّت (pin) أفضل 6 مشاريع على صفحتك الرئيسية في GitHub، اكتب نبذة تعريفية في الـprofile README (مستودع بنفس اسم حسابك)، وخلّي كل مشروع فيه رابط حي شغال — الناس بتجرب قبل ما تقرأ.
ولو شغلك في تطوير مواقع ووردبريس مخصصة لعملائك، القاعدة المهنية: كل ثيم أو إضافة مستودع Git مستقل. كده تقدر تحدّث موقع عميل من غير ما تلمس موقع التاني، وترجع لأي نسخة لو تحديث بوّظ حاجة. الاحترافية في التفاصيل دي هي اللي بتفرق بين «حد بيعمل مواقع» و«مطور يعتمد عليه».
خطة الـ14 يوم: من الصفر لأول push
المعرفة من غير تطبيق بتتبخر. دي خطة يومية — كل يوم 30 لـ45 دقيقة — توصلك من «أول مرة أسمع عن Git» لـ«عندي مشروع على GitHub»:
| اليوم | المهمة | النتيجة |
|---|---|---|
| 1 | ثبّت Git وجهّز اسمك وإيميلك | git –version شغال |
| 2 | اعمل أول مستودع: ملف واحد + add + commit | أول commit في حياتك |
| 3 | جرّب الحالات الثلاث: عدّل، add، commit، وراقب بـstatus وdiff | فهمت دورة الملف |
| 4 | اعمل 5 commits برسائل كويسة على ملفات مختلفة | تاريخ نظيف |
| 5 | جرّب git log بأشكاله وشوف تاريخك | بتقرأ التاريخ بثقة |
| 6 | اعمل فرعًا جديدًا، عدّل فيه، وارجع للرئيسي | أول فرع |
| 7 | ادمج الفرع في main وامسحه | أول merge ناجح |
| 8 | اصنع تعارضًا متعمدًا وحلّه يدويًا | الخوف من التعارض راح |
| 9 | اعمل حساب GitHub ومستودعًا جديدًا | حساب جاهز |
| 10 | اربط مشروعك المحلي واعمل أول push | مشروعك أونلاين |
| 11 | جرّب clone لمشروعك على مجلد جديد + pull | فهمت المزامنة |
| 12 | اكتب README محترم لمشروعك وارفعه | معرض أعمال يتشاف |
| 13 | جرّب stash وrestore وrevert على نسخة تجريبية | أدوات الإصلاح في إيدك |
| 14 | ابدأ مشروعًا حقيقيًا صغيرًا بـgit init من أول سطر | العادة اتبنت |
القاعدة: متفوتش يومين ورا بعض. يوم واحد ضايع مش مشكلة — يومين ورا بعض بيكسروا العادة. ولو يوم زنقك، اعمل commit واحد صغير بس — الاستمرارية أهم من الكمية.
المصادر الموثقة: 10 مصادر بروابط مباشرة
كل مصدر هنا اتفتح واتأكد منه فعليًا — الرابط بيودي على المورد نفسه مش على صفحة عامة، والشارة بتعكس الحقيقة: كل اللي تحت مجاني فعلًا.
مجانيإنجليزي
المرجع الرسمي والأشمل — متاح كاملًا أونلاين مجانًا. الفصول الأولى كفاية للمبتدئ، والباقي مرجع ترجع له.
مجانيإنجليزي
لعبة تفاعلية بتعلمك الفروع والدمج بالتجربة جوه المتصفح — أحسن طريقة تفهم بيها الـbranching من غير ما تحفظ.
مجانيإنجليزي
كورسات تفاعلية من GitHub نفسه جوه حسابك: بتتعلم الـPR والـmerge والـactions بخطوات عملية حقيقية.
مجانيإنجليزي
التوثيق الرسمي المبسط: إنشاء حساب، أول مستودع، والأساسيات خطوة بخطوة من المصدر نفسه.
مجانيإنجليزي
جزء Git ضمن مسار المؤسسة المجاني: شرح عملي مركز على اللي هتحتاجه فعلًا كمبتدئ ويب.
مجانيإنجليزي
شروحات مركزة لكل أمر على حدة مع رسوم توضيحية — ممتاز كمرجع سريع لما تنسى أمر معين.
مجانيعربي
شرح عربي كامل من البداية للاحتراف على يوتيوب — الخيار الأول لو عاوز تفهم بالعربي من غير ترجمة ذهنية.
مجانيإنجليزي
موقع ظريف وعملي: «عملت كذا بالغلط؟» — اختار غلطتك وهو يقولك الحل. هتحتاجه كتير أول شهرين.
مجانيإنجليزي
مرجع كل أمر بتفاصيله من الموقع الرسمي — مش للقراءة المتسلسلة، لكنه أدق إجابة لما تسأل «الأمر ده بيعمل إيه بالظبط؟».
مجانيإنجليزي
شرائح وملخصات (Cheat Sheets) جاهزة للتحميل من GitHub — علّق الملخص جنبك أول أسابيع.
اختار مصدرًا واحدًا وامشي عليه للآخر — التشتت بين 5 كورسات أخطر من كورس واحد ناقص. القائمة دي للمرجعية والتعمق بعد الأساس، مش للبدء بيها كلها مع بعض.
10 أخطاء بتوقف المبتدئين (وإزاي تتفاداها)
- تأجيل Git لـ«بعد ما أتعلم البرمجة»: Git مش مرحلة متقدمة — هو أداة اليوم الأول. كل يوم من غيره هو يوم شغل من غير شبكة أمان.
- الـcommit الضخم آخر الأسبوع: commit واحد فيه 40 ملف متغير مستحيل تراجعه أو تفهمه بعدين. احفظ كتير وصغير.
- رسائل commit عديمة المعنى: «fix» و«update» و«test» رسائل ميتة. اكتب فعلًا واضحًا يوصف التغيير.
- رفع ملفات سرية على GitHub: مفاتيح API وكلمات سر في مستودع عام كارثة حقيقية. .gitignore من أول يوم، وراجع بـgit status قبل كل push.
- الشغل على main مباشرة: الفرع الرئيسي للنسخ المستقرة بس. أي تجربة أو ميزة جديدة — فرع منفصل.
- نسيان الـpull قبل الشغل: تبدأ شغل على نسخة قديمة، وتكتشف بعد ساعات إن زميلك غيّر نفس الملفات. pull أول اليوم عادة مقدسة.
- الخوف من سطر الأوامر: واجهات Git الرسومية مريحة، لكن سطر الأوامر هو اللغة المشتركة لكل الشروحات والفرق. اتعلمه — مش صعب زي ما بيبان.
- حفظ التعديلات التجريبية مع الشغل الحقيقي: كنت بتجرب حاجة ومش متأكد منها؟ stash أو فرع تجريبي — متحطش «تجربة» جوه commit رسمي.
- تجاهل رسائل الخطأ: رسائل Git بالإنجليزية واضحة فعلًا — بتقولك إيه المشكلة وإيه الحل المقترح غالبًا. اقرأها قبل ما تنسخها لجوجل.
- التعلم من غير مشروع حقيقي: أوامر Git من غير مشروع بتتنسى في أسبوع. طبّق كل حاجة في المقال على مشروع فعلي — حتى لو صفحة واحدة.
الخلاصة: أول خطوة النهاردة
لو طلعت من المقال ده بحاجة واحدة، خليها دي: Git مش رفاهية للمحترفين — هو الفرق بين حد بيشتغل بخوف وحد بيشتغل بثقة. الثقة دي مش بتيجي من كتر الأوامر اللي حافظها، بتيجي من إنك عارف إن أي حاجة هتبوظ تقدر ترجعها.
الطريق مختصر وواضح: ثبّت Git، اعمل git init في مشروعك، احفظ أول commit، افتح حساب GitHub، ارفع شغلك. خمس خطوات — وبعدها انت رسميًا بتشتغل زي المحترفين. والـ14 يوم اللي جايين هيحوّلوا الخطوات دي لعادة.
وبعد الـ14 يوم؟
الأساس اللي بنيته هنا يكفيك شهورًا من الشغل الفردي. لما تحس إنك مرتاح، دي المحطات الجاية بالترتيب: اتعلم rebase التفاعلي لتنظيف تاريخك قبل الـpush، جرّب المساهمة في مشروع مفتوح المصدر بـPull Request حقيقي، واستكشف GitHub Actions للأتمتة البسيطة. كل محطة من دول مقال لوحدها — لكنها كلها مبنية على نفس الأساس اللي في إيدك دلوقتي: عدّل، جهّز، احفظ، ارفع. الأساس الصح بيخلي كل اللي بعده سهل.
تحدي الـ24 ساعة
قبل ما تقفل الصفحة: نزّل Git، اعمل مجلدًا جديدًا، نفّذ git init ثم add ثم commit — أول نسخة محفوظة في حياتك. بكرة الصبح اعمل حساب GitHub وارفعها. خطوتان صغيرتان النهاردة = عادة مهنية لسنين.
تطبيق عملي كامل: مشروعك الأول من الصفر لـGitHub
النظرية خلصت — دلوقتي هنبني مشروعًا حقيقيًا صغيرًا ونمشي بيه الرحلة كلها: من مجلد فاضي على جهازك، لمستودع على GitHub فيه تاريخ نظيف وفروع ودمج. المشروع: صفحة تعريفية شخصية بسيطة (اسمك، نبذة، روابط تواصلك). لو عندك مشروع تاني في دماغك، طبّق عليه نفس الخطوات.
المرحلة الأولى: التأسيس محليًا
ابدأ من مجلد فاضي تمامًا — عشان تحس إنك بتبني التاريخ من أول سطر:
قف لحظة وشغّل git log –oneline — هتشوف أول سطر في تاريخ مشروعك. الإحساس ده مهم: انت دلوقتي عندك «نقطة رجوع» مضمونة. أي حاجة هتبوظ بعد كده، النقطة دي موجودة.
المرحلة الثانية: طوّر بفروع مش على الرئيسي
عاوز تضيف قسم «تواصل معي» للصفحة؟ القاعدة اللي اتعلمناها: مش على main مباشرة — فرع جديد:
لاحظ التسلسل: كل ميزة = فرع = commit واضح = دمج = مسح الفرع. بعد 3 شهور من الشغل بالطريقة دي، تاريخ مشروعك هيبقى قصة مقروءة: كل سطر فيها بيقول إيه اللي اتعمل وإمتى وليه.
المرحلة الثالثة: ملف التجاهل قبل الرفع
قبل ما ترفع أي حاجة للإنترنت، اعمل ملف .gitignore. حتى في مشروع صغير، العادة دي بتحميك:
المرحلة الرابعة: الرفع على GitHub
اعمل مستودعًا جديدًا على GitHub بنفس اسم المجلد (my-portfolio)، واختاره Public عشان يبقى أول قطعة في معرض أعمالك، وبعدين:
افتح صفحة المستودع: ملفاتك موجودة، وتاريخ الـcommits موجود، وكل رسالة واضحة. ده مشروع «محترم» بمعايير السوق — مش عشان الكود معقد، لكن عشان إدارته احترافية.
المرحلة الخامسة: الـREADME واللمسة الأخيرة
ضيف ملف README.md يشرح المشروع، وارفعه:
لاحظ إن آخر push كان من غير -u origin main — لأن الربط اتعمل مرة واحدة في المرحلة اللي فاتت وخلاص. من هنا ورايح: git push بس.
من غير ما تحس، طبّقت: init وadd وcommit وbranch وswitch وmerge وremote وpush — يعني 80% من شغلك اليومي الحقيقي. كرر التمرين ده على مشروع تاني من عندك، وهتلاقي الأوامر بتطلع من إيدك لوحدها من غير تفكير.
غلطات متوقعة في التمرين (وحلولها)
- نسيت تعمل commit قبل ما تبدل الفرع: Git هيرفض أو يحذرك — اعمل git stash، بدّل، وارجع اعمل git stash pop.
- كتبت رسالة commit غلط: git commit –amend -m “الرسالة الصح” — بس قبل الـpush.
- الـpush رفض: غالبًا نسيت git pull الأول، أو رابط الـremote غلط — راجع بـgit remote -v.
- رفعت ملف مكنش المفروض يترفع: ضيفه لـ.gitignore، ثم git rm –cached filename عشان يخرج من التتبع من غير ما يتمسح من جهازك، ثم commit وpush.
الأسئلة الشائعة
إيه الفرق بين Git وGitHub؟
Git برنامج بتنزله على جهازك وبيحفظ نسخ مشروعك محليًا من غير إنترنت. GitHub موقع بيستضيف نسخة من مشروعك أونلاين وبيضيف التعاون والمشاركة. العلاقة: Git هو الأساس، وGitHub مبني فوقه. اتعلم Git الأول، وبعدين GitHub هيبقى سهل.
هل Git صعب على المبتدئ؟
لأ — الصعوبة وهم البداية بس. الشغل اليومي الحقيقي 5 أوامر: pull وadd وcommit وpush وstatus. الفروع والمفاهيم المتقدمة بتيجي بالتدريج مع أول مشروع حقيقي. اللي بيصعّب الموضوع هو محاولة فهم كل حاجة نظريًا قبل التطبيق — ابدأ طبّق وهتفهم.
لازم أتعلم سطر الأوامر عشان أستخدم Git؟
أيوه — على الأقل الأساسيات. فيه واجهات رسومية لـGit، لكن سطر الأوامر هو اللغة المشتركة: كل الشروحات والتوثيق والحلول على الإنترنت مكتوبة بيه، وفرق الشغل بتتعامل بيه. الخبر الكويس إنك محتاج 18 أمر بس، مش كورس سطر أوامر كامل.
إيه الفرق بين git pull وgit fetch؟
الـfetch بينزّل التحديثات من GitHub لجهازك من غير ما يدمجها — بصة استكشافية آمنة. الـpull بينزّل ويدمج في نفس الخطوة. القاعدة العملية: استخدم pull في شغلك اليومي العادي، وfetch لما عاوز تشوف إيه اللي اتغير قبل ما تدمج.
عملت commit غلط — أصلحه إزاي؟
حسب الحالة: لو الغلطة في الرسالة بس ولسه مرفعتش، استخدم git commit –amend. لو عاوز تلغي تأثير الـcommit بأمان (خصوصًا لو اترفع)، استخدم git revert اللي بيعمل commit جديد بيعكس الغلطة من غير ما يمسح التاريخ. تجنب تعديل commits اتنشرت واشتغل عليها حد تاني.
إيه هو الـmerge conflict وبحله إزاي؟
بيحصل لما تعديلين يتعارضوا على نفس السطور في نفس الملف وGit ميعرفش يختار. الحل: افتح الملف وهتلاقي علامات توضح النسختين، احذف العلامات وخلّي النسخة النهائية اللي انت عاوزها، ثم git add وgit commit. مش خطأ — ده Git بيطلب رأيك بدل ما يختار غلط.
لازم أرفع شغلي على GitHub ولا Git لوحده كفاية؟
Git لوحده كفاية للحفظ والنسخ على جهازك. لكن GitHub بيضيف 3 حاجات مهمة: نسخة احتياطية بره جهازك، معرض أعمال يشوفه أصحاب الشغل، ومنصة تعاون مع فرق. للمبتدئ اللي عاوز شغل: GitHub مش رفاهية — هو سيرتك الذاتية العملية.
إيه الفرق بين merge وrebase؟
الاتنين بيدمجوا شغل فرع في فرع تاني. الـmerge بيحافظ على التاريخ زي ما حصل فعلًا — فيه commit دمج واضح. الـrebase بيرتب الـcommits في خط واحد نظيف كأن الشغل حصل بالترتيب. للمبتدئ: استخدم merge دايمًا لحد ما تفهم rebase كويس، لأن الـrebase بيعدّل التاريخ وغلطته مكلفة في الشغل الجماعي.
ملف .gitignore بيعمل إيه بالظبط؟
بيقول لـGit: «تجاهل الملفات دي تمامًا». بتحط فيه أي حاجة مينفعش تدخل المستودع: ملفات الأسرار وكلمات السر، مجلدات المكتبات الضخمة زي node_modules، وملفات السجلات المؤقتة. القاعدة: أي حاجة فيها بيانات حساسة أو بتتولد تلقائيًا مكانها في gitignore مش في الـcommit.
أقدر أستخدم Git لمشاريع مش برمجية؟
أيوه — Git بيتعامل مع أي ملفات نصية بكفاءة: مقالات، ملاحظات، ملفات إعدادات، حتى كتابة كتاب. الميزة واحدة: تاريخ كامل لكل تعديل وإمكانية الرجوع لأي نسخة. بس خد بالك إنه مش مناسب للملفات الثنائية الضخمة زي الفيديو والصور الكبيرة — معمول للنصوص أساسًا.
إيه أحسن صيغة لرسالة الـcommit؟
فعل أمر في المضارع + وصف مختصر: «Add login validation» أو «Fix mobile menu overlap». سطر واحد، commit واحد = تغيير واحد. تجنب «fix» و«update» و«final» — رسائل ميتة مش هتفهم منها حاجة بعد شهر. الرسالة الكويسة بتجاوب: إيه اللي اتغير؟ وليه؟
GitHub مجاني فعلًا ولا فيه خدعة؟
مجاني فعلًا للمبتدئ: مستودعات عامة وخاصة غير محدودة، ومساحة كافية للمشاريع العادية. فيه خطط مدفوعة بمميزات متقدمة للفرق والشركات (زي مساحات تخزين أكبر وأدوات متقدمة)، لكنك مش هتحتاج حاجة منها في البداية. ابدأ بالمجاني وانت مرتاح.