
الحلقة الاولى : المقدمة :
الداعي الاساسي لنظام ادارة النسخ هو تسهيل وتوفير الوقت والجهد واعطاء الثقة للمستخدم . مثلما رأينا في هذه الحلقة أن الطرق الاندفاعية والمتحفظة فيها الكثير من المشاكل ، ولا توجد فيها أية مرونة.
نظام إدارة النسخ ، من أساسياته هو وجود التاريخ للمشروع. بحيث لا تخسر أي نسخة كانت تعمل في السابق.
وفكرة الأفرع التي تعطيك الكثير والكثير من المرونة في تطوير وتكبير مشروعك البرمجي.
© All rights reserved.
Most of explainer images shown in the video are credited to atlassian git tutorial.
أداة Git مثلها مثل أي أداة قوية ، فهي تحتاج الى تعلم وتطبيق مستمر للتمكن من مزاياها. بعد انتهائك من تعلمها واكتسابك لمهارات استخدامها ، فهذا يعطيك الكثير من القوة والانجاز البرمجي والثقة والجرأة فيما بعد.
لتنصيب البرنامج اذهب الى الرابط التالي : https://git-scm.com/
الأوامر لإعدادات نظام Git لديك :
git config --global user.name "[name]"
git config --global user.email "[email address]"
git config --global color.ui auto
** فقط في حال لم تضيف Default Editor لنظام Git : اطلق الأمر التالي :
حالة Notepad++ :
git config --global core.editor "'C:/Program Files/Notepad++/notepad++.exe' -w -n"
حالة Atom :
git config --global core.editor "atom --wait"
حالة Sublime :
git config --global core.editor "subl -n -w"
git config --global core.editor "'c:/program files (x86)/sublime text 3/sublimetext.exe' -w"
git config --global core.editor "'c:/program files/sublime text 3/sublimetext.exe' -w"
خيار global هو لتطبيق هذه الاعدادات على أية مشاريع باستخدام أداة Git على جهازك.
للتحقق من وجود الاعدادات هذه اطلق أمر :
git config --global --list
لتبدأ باستخدام أداة Git على مشروعك اذهب اليه وافتح نافذة Git Bash ، واطلق الأمر التالي :
git init
بعدها أضف جميع ملفاتك الى Staging Index بأمر :
git add .
ومن ثم سجلها بالتاريخ بأمر :
git commit -m “My First Commit”
لرؤية تاريخ المشروع اطلق أمر :
git log
رابط المادة التعليمية :
https://github.com/HamzaHajeir/git-training
انسخها مع كامل تاريخها باستخدام أمر git clone :
git clone https://github.com/HamzaHajeir/git-training.git
لمعرفة التعديلات في الملفات التي تشذ عن التاريخ ، اطلق أمر
git status
التعديلات المضافة الى Staging index عبر اضافة خيار --staged
git status --staged
لرؤية ما الفرق بين نسختين في التاريخ للمشروع ، استخدم امر :
git diff COMHASH1 COMHASH2
COMHASH هو الرمز المصاحب للـcommit .
لرؤية ما تم تعديله بنقطة ما بالتاريخ ، استخدم أمر :
git show COMHASH
خيارات استخدام git log :
اعرض آخر # نقاط : -n#
اعرض التعديلات في كل نقطة احصائيا : --stat
اعرض النقاط بالتاريخ زمنيا : --since= --until=
اعرض النقاط حسب جزء من الرسالة : --grep
اعرض النقاط المنتجة عبر اسم العضو المشارك : --author
تصفح الملفات عبر أمر ls باستخدام الخيارات التالية :
اعرض كل الملفات -a
اعرض الملفات على شكل قائمة -l
ls -l
ls -a
ls -la
استعرض الملفات داخل ملف اسمه InnerDirectory
ls -la InnerDirectory
لحذف ملف نفذ أمر git rm :
مع خيار --cached يحذف تتبع الملف في نظام Git ليتم تسجيله في النقطة القادمة.
خيار --recursive (-r) يحذف المجلد مع محتوياته الداخلية.
لإعادة تسمية أي ملف استخدم الأمر git mv.
git mv oldname newname
وتستطيع نقل الملف أيضا بواسطة هذا الأمر (نقل ملف filename الى داخل مجلد exampleDir :
git mv filename exampleDir/filename
رابط لـCheat Sheet من تصميم GitHub : احفظها عندك وابق على متابعة معها :
https://github.github.com/training-kit/downloads/github-git-cheat-sheet.pdf
لتحميل جميع الأفرع Branches من الماستر اطلق الأمر التالي من داخل Git Repository عندك :
for BRANCH in $(git branch -a | grep remotes | grep -v HEAD | grep -v master); do git branch --track "${BRANCH#remotes/origin/}" "${BRANCH}"; done
أو عبر معرفة كل الافرع في مادتنا التعليمية بـGitHub بجانب الافرع التي لديك ، تستطيع معرفتهم باطلاق أمر git branch -v .
وبعدها تنفذ أمر git checkout لجميع Remote branches ، مثلا :
git checkout origin/reset-branch
لرؤية تاريخ جميع الأفرع عبر رسمة ، اطلق الأمر
git log --oneline --graph
لتسهيل العمل ومتابعة الافرع لمشروع Git : حمل ونصب برنامج SourceTree (يحتاج منك لأن تسجل على موقع BitBucket Atlassian بشكل مجاني.
https://www.sourcetreeapp.com/
لعمل دمج بين فرعين branch1 و branch2 ، أولا يجب ان يؤشر HEAD في الفرع الذي تريد عمل دمج للتعديلات اليه branch1
git checkout branch1
بعدها اطلق امر
git merge branch2
لحذف فرع لا تحتاج له ، استخدم أمر :
-D يحذف الفرع نهائيا ،
-d يحذف الفرع وتستطيع استعادته ، كما في الفصل الحادي عشر
git branch -D example-branch
git branch -d example-branch
لعمل دمج بين فرعين branch1 و branch2 ، أولا يجب ان يؤشر HEAD في الفرع الذي تريد عمل دمج للتعديلات اليه branch1
git checkout branch1
بعدها اطلق امر
git merge branch2
نظام Git يعتمد على الاسطر .. فعند تعديل سطر (او مجموعة اسطر) متتالية في فرعين ، يحدث تعارض بينهم لو حاولت الدمج.
فهذا ما يطلق عليه Conflict . ويحتاج منك تدخل مباشر لحلها ، والعملية تسمى Conflict Resolution.
من المهم لديك عند تطوير ميزة ما أن تختبرها مع آخر اصدار لمشروعك في master. فذلك يحتاج منك لعمل update لها مع التعديلات التي تكون في master في اغلب الاحوال.
الاجابة على السؤال من موقع stackoverflow :
https://stackoverflow.com/a/28505516/9168874
أنشئ حسابك على GitHub بشكل مجاني تماما :
https://github.com/
أطلق الامر التالي لكي تربط بين حاسوبك الشخصي وبين المستودع التي أنشأته في GitHub :
git remote add origin %GIT_REPO_URL%
ارفع تعديلاتك الى المستودع الخارجي عبر أمر
git push origin master
git push يتطلب منك مدخلين :
Remote : واللي هو المستودع الخارجي ، سميناه origin
Branch : الفرع اللي بدنا نرفعه ، في هذا المثال هو master
اسحب التعديلات من المستودع الخارجي عبر أمر :
git pull origin master
git pull يتطلب منك مدخلين :
Remote : واللي هو المستودع الخارجي ، سميناه origin
Branch : الفرع اللي بدنا نرفعه ، في هذا المثال هو master
Fork
هو أداة متمركزة في GitHub ، هدفها انشاء نسخة خاصة لك تستطيع المساهمة فيها والتعديل عليها ونشرها اونلاين بدون اختراق رخصة المصدر المفتوح ، والمساهمة فيه بشكل فعلي.
وهو ينسخ المشروع كاملا مع تاريخه الى حسابك في GitHub. وبالتالي لك Access للتعديل عليه.
تستطيع طلب سحب لتعديلاتك الى المستودع الأساسي عبر اداة اسمها Pull Request.
أدوات التراجع عن النقاط التي لا تريدها.
Reset
أداة قوية تحذف خط السجل الذي تريد التراجع عنه (يحذف نقاط commits بأكملها).
بالفيديو شرح لخياراتها : soft , mixed , hard .
git reset HEAD~1
HEAD~1
عبارة عن النقطة السابقة للمكان الذي يتواجد به HEAD حاليا.
لديك خيار force (f) عند عمل push للتعديلات المتأخرة عن المستودع المشترك.
git push origin master -f
Revert
والتي هي أداة لا تحذف التاريخ ، بل تضيف عليه بشكل يعكس التعديلات الموجودة في نقطة ما.
git revert HEAD~2
HEAD~2
النقطة ما قبل السابقة من وجود HEAD حاليا.
Amend
هي أداة في Git تتيح لك التعديل على الcommit السابق ، سواء كان بتعديل الرسالة أم بالملفات المضافة …
git commit --amend -m “تعديل الرسالة”
=====
git add newfile
لاضافة ملف الى staged area
git commit --amend --no-edit
لتعديل النقطة السابقة باضافة ملف newfile ، وبلا تغيير للرسالة نعطي امر (no-edit)
لتحميل جميع الأفرع Branches من الماستر اطلق الأمر التالي من داخل Git Repository عندك :
for BRANCH in $(git branch -a | grep remotes | grep -v HEAD | grep -v master); do git branch --track "${BRANCH#remotes/origin/}" "${BRANCH}"; done
ستتمكن من اداة Git في هذه الدورة التي ستنقلك الى المستوى اللاحق وتصل بك الى مرحلة ادارة فريق العمل.
الدورة مرتبة ومنسّقة بحيث تعطيك الصافي وبزمن قياسي ، وهذا من خلال مادة تطبيقية صمّمت خصيصا لهذه الدورة ، تغطي حالات صعبة يمر فيها المطوّر باستخدام هذه الأداة.الدورة تغطي أفضل الممارسات Best Practices بطبيعة الحال.
أداة Git هي أداة مهمة للمبرمجين، المدراء التقنيين يدركون أهميتها، العالم يتوجه شيئا فشيئا لاستخدامها وتبنيها كأداة تنظيمية للمشاريع البرمجية، هي الأداة الرئيسية لعالم المصدر المفتوح بقيادة أشهر مستضيفي المشاريع GitHub
و GitLab و BitBucket
أهم المخرجات للدورة:
التفرغ عقليا وذهنيا في تطوير المشروع بدلا من الخوف من فقدان نسخة البرنامج الاخيرة
العمل الجماعي والتعاون عبر GitHub
معرفة معمقة لماذا Git وما هو نظامها
الاستفادة من المصدر المفتوح في GitHub باسلوب متقدم
كيف تتراجع عن اخطاء برمجية اثناء تطويرك باستخدام Git
كيف تطور مزايا مشروعك بشكل متوازي
كيف تتمكن من أداة Git وتنتقل لمستوى المطوّر المحترف
ستصل الى مرحلة الوثوق بقدراتك في التطوير
تمتلك الجرأة في تطوير مشاريعك
موجهة الى:
Technical managers in small software services corporations
DevOps engineers who are looking for Best Practices in team working
Programmers with 3-12 months of experience
Programmers with basic knowledge of Git And GitHub
أعدكم بدورة رائعة، بالتوفيق لجميع المبرمجين
أعدكم بدورة رائعة، بالتوفيق لجميع المبرمجين
أعدكم بدورة رائعة، بالتوفيق لجميع المبرمجين
أعدكم بدورة رائعة، بالتوفيق لجميع المبرمجين
أعدكم بدورة رائعة، بالتوفيق لجميع المبرمجين