أساسيات Git
يتتبّع Git التغييرات التي تطرأ على ملفاتك، حتى تحفظ إصدارات منها، وتجرّب دون خوف، وتتعاون مع الآخرين.
الإعداد لأول مرة
أخبر Git من أنت (افعل ذلك مرة واحدة):
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"
إنشاء مستودع
"المستودع" (repo) هو مجلد يراقبه Git.
mkdir my-project
cd my-project
git init # حوّل هذا المجلد إلى مستودع Git
سير العمل الأساسي
لدى Git ثلاث مناطق: - مجلد العمل — ملفاتك الفعلية - منطقة التجهيز — الملفات التي حدّدتها للحفظ - المستودع — السجل المحفوظ
Working → git add → Staging → git commit → Repository
الخطوة 1: تحقّق من الحالة
git status # اطّلع على ما تغيّر
الخطوة 2: جهّز الملفات
git add filename.py # جهّز ملفًا واحدًا
git add . # جهّز كل الملفات المتغيّرة
الخطوة 3: احفظ التغييرات (commit)
git commit -m "Add login feature"
الخطوة 4: اعرض السجل
git log # السجل الكامل
git log --oneline # سطر واحد لكل commit
التراجع عن التغييرات
git checkout -- file.py # تجاهل التغييرات في file.py (قبل التجهيز)
git reset HEAD file.py # أزل ملفًا من منطقة التجهيز (مع الاحتفاظ بالتغييرات)
git reset --hard # تجاهل جميع التغييرات غير المحفوظة ⚠️
العمل مع المستودعات البعيدة (GitHub)
استنسخ مشروعًا موجودًا
git clone https://github.com/username/repo.git
ادفع الكود إلى GitHub
# أنشئ مستودعًا على GitHub أولًا، ثم:
git remote add origin https://github.com/username/repo.git
git branch -M main
git push -u origin main
اسحب التغييرات من GitHub
git pull # احصل على أحدث التغييرات
الفروع
تتيح لك الفروع العمل على الميزات بشكل مستقل.
git branch # اعرض الفروع
git branch feature-login # أنشئ فرعًا جديدًا
git checkout feature-login # انتقل إلى ذلك الفرع
git checkout -b feature-login # أنشئ فرعًا وانتقل إليه في خطوة واحدة (اختصار)
# ادمج فرعًا في main
git checkout main
git merge feature-login
# احذف فرعًا
git branch -d feature-login
الأنماط الشائعة
# احفظ كل التغييرات بأمر واحد
git add -A && git commit -m "Describe your changes"
# اطّلع على ما تغيّر في ملف
git diff filename.py # التغييرات غير المجهّزة
git diff --staged filename.py # التغييرات المجهّزة
# اطّلع على ما تغيّر في آخر commit
git show
# تجاهل ملفات (أنشئ ملف .gitignore)
echo "venv/" > .gitignore
echo ".env" >> .gitignore
echo "__pycache__/" >> .gitignore
أفضل الممارسات
- أكثِر من حفظ التغييرات (commit) — اجعل كل commit صغيرًا ومركّزًا (لا "أصلحت أشياء")
- اكتب رسائل جيدة — "أضف التحقق من كلمة المرور" لا "حدّث الملف"
- فرع واحد لكل ميزة — أبقِ
mainنظيفًا - لا تُودِع الأسرار أبدًا — مفاتيح API وكلمات المرور وملفات
.envمكانها في.gitignore
دورك الآن — تمرين مصغّر
mkdir -p /tmp/git-practice && cd /tmp/git-practice
git init
echo "# My Project" > README.md
git add README.md
git commit -m "Initial commit"
echo "print('hello')" > app.py
git add app.py
git commit -m "Add hello script"
git log --oneline