Git

كيف تستخدم Git كالمحترفين: 25 أمراً وعمليات عمل وأفضل الممارسات

Amine LahmaryAmine Lahmary·Aug 8, 2026·6 min read
كيف تستخدم Git كالمحترفين: 25 أمراً وعمليات عمل وأفضل الممارسات

أساسيات Git التي أتمتتها لدى كل محترف

قبل سير العمل، اضبط هويتك وبعض الإعدادات الحكيمة. مرة واحدة فقط:

git config --global user.name "اسمك"
git config --global user.email "[email protected]"
git config --global init.defaultBranch main
git config --global pull.rebase true
git config --global rerere.enabled true

pull.rebase true تعني أن git pull لا يُنشئ أبداً commits دمج قبيحة. rerere.enabled تتيح لـ Git تذكّر حلولك للنزاعات وإعادة تطبيقها تلقائياً. المحترفون يضبطونها مرة وينسونها.

سير عمل المحترفين: فروع صغيرة، commits صغيرة

سير العمل الاحترافي سهل الشرح وصعب التخطي: لا تعمل commit أبداً مباشرة على الفرع الرئيسي main.

git checkout -b feature/login-form     # إنشاء فرع والانتقال إليه
git add src/components/LoginForm.vue   # إضافة تغيير منطقي واحد
git commit -m "feat: add login form validation"
git push -u origin feature/login-form  # الدفع وتذكّر الفرع

ثلاث قواعد تجعل سير العمل هذا قوياً:

  1. commit واحد = فكرة واحدة. إذا كان رسالة commit تحتاج كلمة «و»، فقسمها.
  2. اعمل commit كثيراً، وادفع صغيراً. commit من 5 أسطر سهل المراجعة وسهل التراجع. commit من 500 سطر لغز للجميع.
  3. احمِ main. لا تدفع إليه مباشرة أبداً. ادمج فقط عبر طلب سحب (pull request) مع مراجعة.

اكتب رسائل commit ذات معنى

الرسائل الجيدة تتبع الصيغة التقليدية: نوع، وملخص قصير، وجسم اختياري.

git commit -m "fix: handle empty email in contact form"

# مع جسم:
git commit -m "fix: handle empty email in contact form" -m "كان النموذج ينهار عندما يكون حقل البريد فارغاً. أضيف شرط حماية قبل التحقق."

الأنواع الشائعة: feat, fix, refactor, docs, test, chore. بعد ستة أشهر، سجل نظيف هو توثيق مجاني.

تراجع عن الأخطاء كالمحترفين (الأوامر التي تنقذك)

الجميع يخطئ. المحترفون لا يذعرون، لأن Git آلة زمن. إليك الأمر الدقيق لكل موقف.

لم أقم بـ commit بعد — إزالة التغيير

git restore src/App.vue            # تجاهل تغييرات مساحة العمل
git restore --staged src/App.vue   # إلغاء إضافة ملف مع الاحتفاظ بالتغييرات

عملت commit لكنه محلي — أصلحه

git commit --amend -m "fix: correct typo in title"   # إعادة كتابة آخر commit

أريد إعادة كتابة عدة commits محلية

git rebase -i HEAD~3   # دمج أو إعادة ترتيب أو تعديل آخر 3 commits

في المحرر، غيّر pick إلى squash لدمج commits في تاريخ واحد نظيف.

دفعت بالفعل — تراجع دون كذب

لا تعِد كتابة تاريخ دفعته أبداً. أنشئ بدلاً من ذلك commit جديداً يلغي السيئ:

git revert <hash-commit>   # آمن: يضيف commit يلغي القديم

git revert يُبقي التاريخ صادقاً وهو آمن للفروع المشتركة. هذه هي نسخة المحترفين من «احذفه».

أريد حفظ العمل لوقت لاحق

git stash               # حفظ العمل غير الملتزم وتنظيف الشجرة
git stash pop           # استعادته
git stash list          # عرض المخازن
git stash save "wip"    # تسميتها

git stash الأداة المثالية عندما تكون في منتصف مهمة وتحتاج تبديل الفرع.

الأوامر التي يشغّلها المحترفون كل يوم

هذه الأوامر الخمسة تفصل المحترفين عن المبتدئين بصمت.

رؤية ما تغيّر بالضبط

git diff                  # تغييرات غير مضافة
git diff --staged         # تغييرات مضافة جاهزة للـ commit

نفّذ دائماً git diff قبل الـ commit. إنها الفرصة الأخيرة لالتقاط الأخطاء.

إضافة أجزاء من ملف، لا الملف كله

git add -p src/components/ContactForm.vue   # إضافة سطراً سطراً

وضع -p (patch) يسألك عن كل مقطع: y نعم، n لا. يبقي التعديلات غير المرتبطة خارج commits.

تتبّع التاريخ

git log --oneline --graph --decorate   # تاريخ مرئي
git blame src/App.vue                  # من غيّر كل سطر ومتى

git blame ليس للتجريح. يجيب على «متى ولماذا أضيف هذا السطر؟» وسيوفر لك ساعات.

إصلاح خطأ بتتبعه تلقائياً

git bisect start
git bisect bad     # حدّد commit الحالي كمعطوب
git bisect good <commit-قديم>   # حدّد commit قديماً سليماً

يسحب Git commit المنتصف. تختبر وتقول good أو bad، وGit يقسّم البحث إلى أن يجد commit الذي كسّر الأمور بالضبط. سحر ومجاني.

جلب commit واحد إلى فرعك

git cherry-pick <hash-commit>   # نسخ commit محدد إلى فرعك

مثالي لأخذ إصلاح سريع من main إلى فرع ميزة دون دمج كامل.

القاعدة الذهبية: pull مع rebase، وpush مع force-with-lease

عندما يتأخر فرعك عن المستودع البعيد، لا تنشئ commits دمج محلية أبداً:

git pull --rebase          # إعادة تشغيل commits فوق التغييرات البعيدة
git push -u origin my-branch

وإذا اضطررت فعلاً لإعادة كتابة commits مدفوعة (يحدث)، لا تستخدم أبداً git push -f عادياً:

git push --force-with-lease

--force-with-lease يرفض استبدال عمل لم تره. أما -f العادي فيمكنه تدمير commits زميل. هذا العلم الواحد هو الفرق بين المحترف والخطر.

ورقة الغش الخاصة بمحترفي Git

الموقف الأمر
عرض الحالة git status
إضافة كل شيء git add .
الـ commit git commit -m "..."
التراجع عن ملف غير ملتزم git restore <ملف>
إلغاء آخر commit محلي git commit --amend
إلغاء commit مدفوع git revert <hash>
حفظ العمل مؤقتاً git stash
عرض التاريخ git log --oneline --graph
من غيّر هذا السطر؟ git blame <ملف>
دمج آخر 3 commits git rebase -i HEAD~3
العثور على commit الخطأ git bisect start
نسخ commit git cherry-pick <hash>
تحديث الفرع بأمان git pull --rebase
الاستبدال بحذر git push --force-with-lease

نصائح Git للعمل الجماعي (هنا يفوز المحترفون فعلاً)

  • اسحب قبل أن تدفع، كل مرة. git pull --rebase أولاً، ثم ادفع. لا مفاجآت للفريق.
  • أبقِ طلبات السحب صغيرة. PR من 200 سطر يُراجع. PR من 2000 سطر يُتجاهل. PR صغيرة = أخطاء أقل.
  • لا تعمل commit للأسرار أبداً. أضف .env والمفاتيح ومجلدات البناء إلى .gitignore من اليوم الأول.
# .gitignore
node_modules/
dist/
.env
.env.*
*.log
  • استخدم .gitignore لكل لغة. قوالب gitignore.io بداية ممتازة.
  • اكتب README يشرح سير العمل. «فرّع من main، اعمل PR إلى main، لا تدفع مباشرة أبداً» يوفر ساعة لكل وافد جديد.

عقلية المحترف

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

القاعدة التي تمنع 90% من كوارث Git: التزم صغيراً، التزم كثيراً، ولا تعِد كتابة تاريخ سحبه شخص آخر بالفعل. اتبع هذه القواعد الثلاث مع الأوامر أعلاه، وأنت تعمل بالفعل كالمحترفين.

ماذا تتعلم بعد ذلك

أتقن الأساسيات هنا أولاً. ثم استكشف:

  • أسماء Git المستعارة — اختصر git checkout إلى git co، وgit status إلى git st، والمزيد:
git config --global alias.st status
git config --global alias.co checkout
git config --global alias.lg "log --oneline --graph --decorate"
  • الخطافات (hooks) — نفّذ فحوصات تلقائية قبل كل commit.
  • عمليات rebase — حافظ على تاريخ خطي مثالي للفرق الصغيرة.

Git يبدو مخيفاً من الخارج. من الداخل، إنها مجرد أوامر تحمي عملك وعمل فريقك. تعلّمها مرة، واستخدمها كل يوم، ودع آلة الزمن تفعل الباقي.