بعد أن تبدأ ببناء مشاريع بايثون حقيقية، من الأفضل أن تتعلم أساسيات Git ثم GitHub. Git يتتبع تغييرات ملفات مشروعك على جهازك ويحفظ مراحل العمل على شكل Commits، أما GitHub فهو منصة تستضيف مستودعات Git على الإنترنت لتتمكن من حفظ المشروع ومشاركته والتعاون عليه.
هذا هو الدرس 10 من سلسلة بايثون بعد الأساسيات، وسنركز فيه على Workflow واحد عملي: مشروع بايثون محلي → Git → أول Commit → GitHub → أول Push.
{alertInfo} لا تحتاج إلى إتقان كل أوامر Git الآن. إذا فهمتstatusوaddوcommitوpush، فأنت تملك أساسًا جيدًا للبدء.
{getToc} $title={محتوى المقال}
لماذا تحتاج Git بعد أساسيات بايثون؟
عندما يبدأ المشروع في النمو قد تجد نفسك تحفظ نسخًا بهذه الطريقة:
project.py
project-final.py
project-final2.py
project-final-last.py
هذه الطريقة لا تخبرك بوضوح ماذا تغير في كل نسخة، وقد تصبح مربكة بسرعة. مع Git تعمل على نفس المشروع، ثم تحفظ نقاطًا مهمة في تاريخه باسم Commits.
Git ليس مجرد Backup؛ وظيفته الأساسية تتبع تاريخ التغييرات في المشروع، بينما النسخ الاحتياطي له هدف أوسع لحماية الملفات من الفقد.
ما الفرق بين Git وGitHub؟
| Git | GitHub |
|---|---|
| يعمل محليًا على جهازك. | يستضيف المستودعات على الإنترنت. |
| يتتبع تغييرات الملفات. | يساعد على المشاركة والتعاون. |
| ينشئ Commits ويحفظ التاريخ. | يعرض الملفات وCommits عبر الويب. |
| يمكن استخدامه بدون GitHub. | يستضيف مستودعات Git. |
ماذا تحتاج قبل البدء؟
- مشروع بايثون صغير.
- Git مثبت على جهازك.
- Terminal أو CMD أو PowerShell.
- حساب GitHub إذا أردت رفع المشروع.
تحقق من تثبيت Git
git --version
إذا ظهر رقم إصدار، فـGit جاهز. إذا كان الأمر غير معروف، فغالبًا Git غير مثبت أو لم يُضف إلى PATH.
أنشئ مشروعًا بسيطًا للتجربة
my-python-project/
│
├── main.py
└── README.md
انتقل إلى المجلد من Terminal. الأمر cd يعني تغيير المجلد الحالي:
cd my-python-project
حوّل المجلد إلى Git Repository
git init
الآن أصبح المجلد مستودع Git محليًا. Git ينشئ بياناته الداخلية في مجلد مخفي باسم .git، ولا تحتاج إلى تعديله يدويًا.
استخدم git status باستمرار
git status
يخبرك git status بالملفات الجديدة والمعدلة، وما تم تجهيزه للـCommit، وحالة المستودع الحالية.
ما وظيفة git add؟
لتجهيز ملف واحد:
git add main.py
ولتجهيز جميع التغييرات داخل المشروع:
git add .
{alertWarning}git add .لا يرفع الملفات إلى GitHub. هو يجهز التغييرات للـCommit المحلي. راجعgit statusأولًا حتى لا تضيف ملفات حساسة أو غير مطلوبة.
أنشئ أول Commit
git commit -m "Add first Python program"
الـCommit نقطة محفوظة في تاريخ المشروع، وتحمل التغييرات التي جهزتها ورسالة تصف ما حدث.
إذا طلب Git اسمك وبريدك
git config --global user.name "Your Name"
git config --global user.email "you@example.com"
هذه البيانات ترتبط بهوية Commits. استخدم الاسم والبريد المناسبين لك، ولا تنسخ القيم التجريبية كما هي.
دورة العمل الأساسية في Git
عدّل الملفات
↓
git status
↓
git add
↓
git commit
وعندما يكون لديك Repository بعيد على GitHub تضيف:
git push
أنشئ .gitignore قبل رفع مشروع بايثون
بعض الملفات لا يجب أن تدخل المستودع أصلًا:
__pycache__/
*.pyc
.venv/
venv/
.env
مجلدات .venv/ وvenv/ تحتوي بيئة افتراضية محلية ولا تُرفع عادة إلى GitHub. أما .env فقد يحتوي API Keys أو Tokens أو كلمات مرور، لذلك يجب عدم رفعه إلى Repository عام.
إذا كنت تستخدم مكتبات خارجية، احفظ المتطلبات بدل رفع البيئة الافتراضية:
python -m pip freeze > requirements.txt
لشرح أوسع راجع شرح البيئة الافتراضية venv في بايثون.
أنشئ Repository على GitHub
أنشئ مستودعًا جديدًا باسم واضح مثل my-python-project، واختر Public أو Private حسب حاجتك.
إذا كان مشروعك المحلي يحتوي ملفات وCommit بالفعل، فالأبسط عند أول ربط إنشاء Repository بعيد فارغ، ثم نسخ رابط المستودع. هذا يتجنب وجود تاريخ مختلف في الطرفين قبل أول Push.
اربط المشروع المحلي بـGitHub
git remote add origin https://github.com/USERNAME/my-python-project.git
origin اسم شائع للرابط البعيد الرئيسي. للتحقق من الروابط:
git remote -v
استخدم الفرع main
git branch -M main
هذا يعيد تسمية الفرع الحالي إلى main.
نفّذ أول Push إلى GitHub
git push -u origin main
بعد أول مرة، يكفي غالبًا:
git push
| الأمر | وظيفته |
|---|---|
git add | يجهز التغييرات للـCommit. |
git commit | يحفظ نقطة جديدة في التاريخ المحلي. |
git push | يرسل Commits المحلية إلى GitHub. |
مثال عملي كامل مع calculator.py
def add(a, b):
return a + b
print(add(5, 3))
ثم نفذ:
git status
git add calculator.py
git commit -m "Add calculator"
git push
بعدها أضف دالة جديدة:
def add(a, b):
return a + b
def divide(a, b):
return a / b
print(add(5, 3))
ثم احفظ المرحلة الجديدة:
git status
git add calculator.py
git commit -m "Add division function"
git push
هذا هو Workflow الذي ستكرره كثيرًا: تعدّل، تراجع، تجهز، تنشئ Commit، ثم Push.
لماذا يحتاج المشروع README.md؟
- اسم المشروع.
- ما الذي يفعله؟
- طريقة التشغيل.
- المتطلبات.
- مثال استخدام.
ماذا ترفع إلى GitHub وماذا تستبعد؟
| ارفع عادة | لا ترفع عادة |
|---|---|
ملفات .py | .venv/ وvenv/ |
README.md | __pycache__/ |
requirements.txt | *.pyc |
| ملفات المشروع الضرورية | .env والأسرار وAPI Keys |
نسخ مشروع موجود باستخدام git clone
git clone https://github.com/USERNAME/project.git
ينشئ Git نسخة محلية من المستودع مع تاريخه.
جلب التغييرات باستخدام git pull
git pull
git pull يجلب التغييرات من المستودع البعيد ويحدث الفرع المحلي. تعارضات الدمج موضوع لاحق.
ماذا تتعلم بعد هذا الدرس؟
بعد أن تتقن Workflow الأساسي، انتقل إلى Branch وMerge. لا تحتاج الآن إلى Rebase أو استراتيجيات متقدمة.
هل GitHub Desktop مناسب؟
نعم، يمكن أن يكون خيارًا بصريًا مريحًا. لكن الأفضل أن تفهم أولًا معنى status وadd وcommit وpush حتى تعرف ما يحدث خلف الواجهة.
أخطاء المبتدئين مع Git وGitHub
- تنفيذ git init في المجلد الخطأ: تحقق من مسارك.
- استخدام git add . دون مراجعة: نفذ
git statusأولًا. - رفع .env: قد يكشف أسرارًا حقيقية.
- رفع venv: استبعد البيئة واستخدم
requirements.txt. - نسيان commit قبل push: Push يرسل Commits؛ لا ينشئها.
- رسائل Commit غير مفيدة: اكتب وصفًا واضحًا بدل
updateدائمًا. - الخلط بين add وcommit وpush: لكل أمر مرحلة مختلفة.
- اعتبار GitHub هو Git: Git يعمل محليًا حتى بدون GitHub.
GitHub ليس بديلًا كاملًا عن النسخ الاحتياطي
Git وGitHub ممتازان لتتبع الكود واستضافته، لكن الملفات المهمة قد تحتاج Backup منفصلًا، خصوصًا البيانات التي لا تدخل المستودع.
روابط داخلية مفيدة من بايثون العرب
- سلسلة بايثون بعد الأساسيات
- شرح البيئة الافتراضية venv وrequirements.txt
- أفكار مشاريع بايثون للمبتدئين حسب المهارة
- مكتبة أوامر بايثون
ويمكنك الاطلاع على مستودعات بايثون العرب على GitHub كمثال عملي على تنظيم ملفات الدروس والمشاريع.
الخلاصة
بعد أن تتجاوز أساسيات بايثون وتبدأ مشاريع حقيقية، تعلم Git عبر دورة العمل الأساسية: status ثم add ثم commit. وبعد ربط المشروع بـGitHub استخدم push لمشاركة Commits.
احرص أيضًا على .gitignore جيد، ولا ترفع .env أو البيئة الافتراضية، واكتب رسائل Commit واضحة.
{alertSuccess} المسار المختصر: مشروع بايثون →git init→git status→git add→git commit→ GitHub →git push.
أسئلة شائعة
ما الفرق بين Git وGitHub؟
Git نظام محلي لتتبع تغييرات المشروع وإنشاء Commits، بينما GitHub منصة لاستضافة مستودعات Git ومشاركتها والتعاون عليها.
هل أحتاج Git لتعلم بايثون؟
لا تحتاجه في بداية الأساسيات، لكنه يصبح مهمًا عندما تبدأ مشاريع تريد تطويرها وحفظ تاريخها ومشاركتها.
متى أبدأ تعلم Git؟
ابدأ عندما تستطيع إنشاء مشروع بايثون صغير وتبدأ تعديله على مراحل.
كيف أرفع مشروع بايثون إلى GitHub؟
استخدم git init، أنشئ Commit، أنشئ Repository على GitHub، أضف الرابط بـgit remote add origin، ثم نفذ git push -u origin main.
هل أرفع مجلد venv إلى GitHub؟
عادة لا. أضف venv/ أو .venv/ إلى .gitignore واستخدم requirements.txt.
ما الفرق بين git add وcommit وpush؟
git add يجهز التغييرات، وgit commit يحفظها محليًا، وgit push يرسل Commits إلى المستودع البعيد.
هل GitHub بديل عن Git؟
لا. Git هو نظام إدارة الإصدارات نفسه، ويمكن استخدامه بدون GitHub. GitHub خدمة تستضيف مستودعات Git.


