0%
الدرس 3 من 10
اكتمل 30%

أوامر Git الأساسية

أتقن الأوامر الأساسية لتتبع التعديلات وإنشاء الـ commits وإدارة ملفاتك.

أوامر Git الأساسية

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

نظرة عامة على سير عمل Git

git addgit commitgit pushgit pullgit checkoutWorking DirectoryStaging AreaLocal RepositoryRemote Repository

أوامر الحالة والمعلومات

git status

الأمر الأكثر استخدامًا لمعرفة حالة مستودعك:

# عرض الحالة الكاملة
git status

# النسخة المختصرة
git status -s
git status --short

مثال على المخرجات:

On branch main
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        new file:   index.html

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   README.md

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        style.css

git log

استعراض سجل الـ commits:

# السجل الكامل
git log

# النسخة المضغوطة
git log --oneline

# مع رسم بياني للفروع
git log --oneline --graph --all

# تحديد عدد الـ commits
git log -5

# منذ تاريخ معيّن
git log --since="2024-01-01"

# حسب المؤلف
git log --author="Nom Auteur"

git show

عرض تفاصيل commit:

# آخر commit
git show

# commit محدد
git show abc1234

# ملف محدد داخل commit
git show abc1234:fichier.txt

إدارة الملفات

git add

إضافة ملفات إلى منطقة التجهيز (staging area):

# إضافة ملف محدد
git add fichier.txt

# إضافة عدة ملفات
git add fichier1.txt fichier2.txt

# إضافة جميع الملفات المعدّلة
git add .

# إضافة جميع الملفات (حتى المحذوفة)
git add -A
git add --all

# الإضافة بشكل تفاعلي
git add -i

# الإضافة على أجزاء (patch)
git add -p

git commit

إنشاء لقطة (snapshot) لتعديلاتك:

# commit مع رسالة
git commit -m "Message de commit"

# commit مع رسالة مفصّلة
git commit -m "Titre du commit" -m "Description détaillée"

# commit مع إضافة الملفات المعدّلة تلقائيًا
git commit -am "Message de commit"

# تعديل آخر commit
git commit --amend

# commit مع توقيع GPG
git commit -S -m "Message signé"

أفضل الممارسات لرسائل الـ commit

# الصيغة الموصى بها
git commit -m "type: description courte

Description plus détaillée si nécessaire.

- Point important 1
- Point important 2

Fixes #123"

الأنواع الشائعة:

  • feat: ميزة جديدة
  • fix: إصلاح خلل
  • docs: التوثيق
  • style: التنسيق، الفواصل المنقوطة المفقودة، إلخ.
  • refactor: إعادة هيكلة الشيفرة
  • test: إضافة اختبارات
  • chore: الصيانة

إدارة التعديلات

git diff

مقارنة التعديلات:

# الاختلافات في working directory
git diff

# الاختلافات في staging area
git diff --staged
git diff --cached

# الاختلافات بين commit‑ين
git diff abc1234 def5678

# الاختلافات في ملف محدد
git diff fichier.txt

# إحصائيات التعديلات
git diff --stat

git restore

التراجع عن التعديلات (Git 2.23+):

# استعادة ملف معدّل
git restore fichier.txt

# استعادة جميع الملفات المعدّلة
git restore .

# إزالة ملف من staging area
git restore --staged fichier.txt

# الاستعادة من commit محدد
git restore --source=abc1234 fichier.txt

git reset

إعادة تعيين حالة المستودع:

# إزالة ملف من staging area
git reset fichier.txt

# إعادة تعيين staging area
git reset

# العودة إلى الـ commit السابق (مع الاحتفاظ بالتعديلات)
git reset HEAD~1

# إعادة تعيين كاملة (تحذير: فقدان البيانات)
git reset --hard HEAD~1

إدارة الملفات والمجلدات

git rm

حذف الملفات:

# حذف ملف من المستودع ومن النظام
git rm fichier.txt

# الحذف من المستودع فقط (مع الإبقاء عليه محليًا)
git rm --cached fichier.txt

# حذف مجلد بشكل تكراري
git rm -r dossier/

git mv

نقل الملفات أو إعادة تسميتها:

# إعادة تسمية ملف
git mv ancien-nom.txt nouveau-nom.txt

# نقل ملف
git mv fichier.txt dossier/fichier.txt

ملف .gitignore

تجاهل الملفات والمجلدات:

# ملفات السجل
*.log

# مجلدات البناء
build/
dist/

# ملفات الإعداد المحلية
.env
config.local.js

# الاعتماديات
node_modules/
vendor/

# ملفات النظام
.DS_Store
Thumbs.db

# بيئات التطوير
.vscode/
.idea/
*.swp
*.swo

# الملفات المؤقتة
*.tmp
*.temp

أوامر .gitignore

# التحقق مما إذا كان الملف متجاهلًا
git check-ignore fichier.txt

# فرض إضافة ملف متجاهل
git add -f fichier.txt

# إزالة ملف متتبَّع سابقًا لكنه أصبح متجاهلًا الآن
git rm --cached fichier.txt

التنقل في السجل

git checkout

التنقل بين الـ commits والفروع:

# الانتقال إلى commit محدد (وضع detached)
git checkout abc1234

# العودة إلى الفرع الرئيسي
git checkout main

# إنشاء فرع جديد والتبديل إليه
git checkout -b nouvelle-branche

git switch (Git 2.23+)

بديل حديث لـ checkout:

# التبديل إلى فرع
git switch main

# إنشاء فرع جديد والتبديل إليه
git switch -c nouvelle-branche

# العودة إلى الفرع السابق
git switch -

أوامر المساعدة والمعلومات

git help

الحصول على المساعدة:

# مساعدة عامة
git help

# مساعدة لأمر محدد
git help commit
git commit --help

# قائمة الأوامر الشائعة
git help -a

git config

إدارة الإعدادات:

# عرض كل الإعدادات
git config --list

# عرض قيمة محددة
git config user.name

# تعديل قيمة
git config --global user.email "nouveau@email.com"

تمارين عملية

التمرين 1: سير العمل الأساسي

# 1. إنشاء مشروع جديد
mkdir exercice-git
cd exercice-git
git init

# 2. إنشاء ملفات
echo "# Mon Projet" > README.md
echo "console.log('Hello World');" > app.js
echo "body { margin: 0; }" > style.css

# 3. التحقق من الحالة
git status

# 4. إضافة الملفات
git add README.md app.js
git status

# 5. إجراء commit
git commit -m "feat: ajout des fichiers de base"

# 6. إضافة ملف CSS
git add style.css
git commit -m "style: ajout du CSS de base"

# 7. عرض السجل
git log --oneline

التمرين 2: التعديلات والتصحيحات

# 1. تعديل ملف
echo "// Commentaire ajouté" >> app.js

# 2. عرض الاختلافات
git diff

# 3. الإضافة إلى staging area
git add app.js

# 4. عرض الاختلافات الموجودة في staging
git diff --staged

# 5. Commit
git commit -m "docs: ajout de commentaire"

# 6. تعديل آخر commit
git commit --amend -m "docs: ajout de commentaire dans app.js"

التمرين 3: معالجة الأخطاء

# 1. إنشاء ملف عن طريق الخطأ
echo "Fichier temporaire" > temp.txt
git add temp.txt

# 2. إزالته من staging area
git restore --staged temp.txt

# 3. حذف الملف
rm temp.txt

# 4. تعديل ملف ثم التراجع عن التعديل
echo "Modification non désirée" >> README.md
git restore README.md

أوامر متقدمة مفيدة

git stash

حفظ التعديلات مؤقتًا:

# حفظ التعديلات
git stash

# الحفظ مع رسالة
git stash push -m "Travail en cours sur la feature X"

# عرض قائمة الـ stash
git stash list

# تطبيق آخر stash
git stash pop

# تطبيق stash محدد
git stash apply stash@{1}

git clean

تنظيف الملفات غير المتتبَّعة:

# عرض ما سيتم حذفه
git clean -n

# حذف الملفات غير المتتبَّعة
git clean -f

# حذف المجلدات أيضًا
git clean -fd

اختصارات (Aliases) مفيدة

اضبط هذه الاختصارات لتوفير الوقت:

git config --global alias.st status
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit
git config --global alias.unstage 'restore --staged'
git config --global alias.last 'log -1 HEAD'
git config --global alias.lg 'log --oneline --graph --decorate --all'
git config --global alias.amend 'commit --amend --no-edit'

استكشاف الأخطاء الشائعة وإصلاحها

التراجع عن آخر commit (مع الاحتفاظ بالتعديلات)

git reset HEAD~1

التراجع الكامل عن آخر commit

git reset --hard HEAD~1

استرجاع ملف محذوف

git restore fichier.txt
# أو من commit محدد
git restore --source=HEAD~1 fichier.txt

معرفة من عدّل سطرًا ما

git blame fichier.txt

أفضل الممارسات

  1. نفّذ commit بشكل متكرر: commits صغيرة ومتكررة
  2. رسائل واضحة: صِف ما يفعله الـ commit
  3. تحقق قبل تنفيذ commit: git status وgit diff
  4. استخدم .gitignore: تجنّب الملفات غير الضرورية
  5. اختبر قبل تنفيذ commit: تأكد من أن الشيفرة تعمل

مصادر إضافية

أوراق مرجعية (Cheat sheets)

أدوات مرئية

  • gitk: واجهة رسومية مدمجة
  • git gui: واجهة لتنفيذ الـ commits

الخاتمة

تشكّل هذه الأوامر أساس استخدامك اليومي لـ Git. وسيتيح لك إتقان هذه العمليات إدارة مشاريعك بكفاءة والحفاظ على سجل نظيف ومتماسك.

في الدرس القادم، سنستكشف الفروع والدمج، وهما مفهومان أساسيان للعمل التعاوني وإدارة الميزات المتوازية.


وقت القراءة المقدّر: 25 دقيقة
المستوى: مبتدئ
الخطوة السابقة: الإعداد والخطوات الأولى
الخطوة التالية: الفروع والدمج