From 04013b6ee6e6d2644c4c017662629636ac83b4ae Mon Sep 17 00:00:00 2001
From: Mukhtar SayedSaleh
+ عند بداية كل مشروع نقوم بتنفيذ الأمر التالي بعد الانتقال إلى مجلد المشروع
+ للعمل مع مستودع موجود مسبقاً يجب أن تقوم بنسخه إلى الجهاز الحالي عن طريق الأمر التالي مع مراعاة تغيير المسار
+ "الشجرة" بنية معطيات معروفة, و يتكون كل مستودع git من ثلاث "أشجار" تتم إدارتها آلياً.
+ يستخدم الأمر add لإضافة التغييرات التي طرأت على ملف ما أو مجموعة من الملفات إلى شجرة المرحلة الانتقالية تمهيداً لأخذ صورة زمنية عنه كمايلي:
+ لإرسال الصور الزمنية commits المأخوذة إلى المستودع البعيد نقوم بتنفيذ الأمر التالي:
+ تستخدم الفروع Branches لتطوير ميزات برمجية مستقلة عن بعضها البعض و ذلك بغية منع عملية التطوير من التأثير على سير التطبيق الأصلي.
+ لإنشاء فرع جديد اسمه "feature_x" و الانتقال إليه ننفذ الأمر
+ لتحديث المستودع المحلي بحيث يطابق آخر التحديثات المرسلة إلى المستودع البعيد من قبل زملاء العمل ننفذ الأمر
+ it's recommended to create tags for software releases. this is a known concept, which also exists in SVN. You can create a new tag named 1.0.0 by executing
+ in its simplest form, you can study repository history using..
+
+ In case you did something wrong, which for sure never happens ;), you can replace local changes using the command
+ If you instead want to drop all your local changes and commits, fetch the latest history from the server and point your local master branch at it like this
+ built-in git GUI
+
+
+ الإعداد
+
+
+
+ إنشاء مستودع جديد
+
+ git init
+ و ذلك لإنشاء مستودع جديد ضمن مجلد المشروع.
+ العمل مع مستودع موجود مسبقاً
+
+ git clone /path/to/repository
+ و هذا في حال كون المستودع القديم موجوداً ضمن نفس الجهاز
أمّا في حال كونه مستودعاً بعيداً عبر الانترنت فيتم نسخه باستخدام الأمر التالي مع مراعاة تغيير المسار و بيانات الوصول
+ git clone username@host:/path/to/repository
+ كيف يعمل نظام git
+
+ تمثل الشجرة الأولى مجلد العمل الحالي Working Directory و هي ببساطة نسخة مطابقة تماماً في كل لحظة لمجلد العمل الحالي في تلك اللحظة.
+ أمّا الشجرة الثانية فهي شجرة الفهرس Index التي يتم استعمالها كمرحلة انتقالية تمر بها ملفات العمل الحالية قبل أخذ صورة عنها commit في لحظة زمنية ما.
+ و أمّا الشجرة الثالثة فهيشجرة التاريخ و تحوي مجموعة الصور الزمنيّة commits الخاصة بمشروعنا منذ بدايته و يشير المتغير الخاص HEAD إلى عنوان آخر صورة مضافة لشجرة التاريخ.
+
+ أمرا add & commit
+
+ git add filename
+ * git add
+ و يتم أخذ الصورة الزمنية بشكل فعلي من خلال الأمر
+ "git commit -m "Commit message
+ حيث يتم إرفاق الرسالة الخاصة بالصورة لعرضها لاحقاً كتسمية تدل على هذه الصورة و بالتالي يصبح الـ HEADالآن مشيراً إلى الصورة الأخيرة التي أخذت للتوّ.
+ إرسال الصور الزمنية للمستودع البعيد
+
+ git push origin master
+ ملحوظة: يمكنك تغيير master لأي فرع ترغب بإرسال الصور الزمنية إليه.
+
+ إذا كان مستودع git الذي تعمل عليه حالياً مستودعاً خاصاً بك و لم تقم باستنساخه من مكان آخر, و كنت ما تزال ترغب بإرساله لمخدم بعيد يمكنك عندها إضافة هذه المخدم كـ origin باستخدام الأمر
+ <git remote add origin <server
+ و الآن أصبح بمقدورك إرسال الصور الزمنية إلى المستودع البعيد
+
+ الفروع
+
في العادة يعتمد الفرع master كفرع افتراضي لأي مستودع git و يتم التفريع منه من أجل كل ميزة جديدة ثم و عند تجربة الميزة و استقرارها يتم دمج فرعها مرة أخرى بالفرع master و هكذا.
+
+
+ git checkout -b feature_x
+ للعودة إلى الفرع master
+ git checkout master
+ لحذف الفرع feature_x
+ git branch -d feature_x
+ ملحوظة: لا تكون الفروع التي تنشؤها متوفرة للآخرين إلا في حال قمت بإرسالها إلى المستودع البعيد بشكل صريح بأمر يشبه مايلي
+ <git push origin <branch
+ تحديث المستودع و دمج الفروع
+
+ git pull
+ حيث يقوم الأمر السابق بجلب fetch التغييرات و دمجها merge مع المحتوى المحلي.
+ لدمج فرع آخر مع الفرع النشط حالياً (دمج الفرع branch مع الفرع master النشط حالياً على سبيل المثال) نستخدم الأمر
+ git merge branch
+ git يحاول دائماً أن يقوم بدمج التعديلات المحلية بالتعديلات البعيدة ضمن الملفات البرمجية بشكل آلي, و العملية تسير بسهولة و يسر في الغالب إلّا أننا أحياناً نصادف تعارضات conflicts عندما يقوم مطوران بتعديل نفس الأسطر في نفس الملف ضمن نفس الفترة.
+ عند حصول أي تعارضات conflicts فإنّ git ينبهك إليها و يترك عملية الدمج على عاتقك حيث تقوم بإصلاح التعارض و من ثم تنفذ الأمر.
+ <git add <filename
+ ملحوظة: يمكنك دائماً استعمال الأمر التالي لملاحظة التغيرات بين فرعين
+ <git diff <source_branch> <target_branch
+ tagging
+
+ git tag 1.0.0 1b2e1d63ff
+ the 1b2e1d63ff stands for the first 10 characters of the commit id you want to reference with your tag. You can get the commit id by looking at the...
+ log
+ git log
+ You can add a lot of parameters to make the log look like what you want. To see only the commits of a certain author:
+ git log --author=bob
+ To see a very compressed log where each commit is one line:
+ git log --pretty=oneline
+ Or maybe you want to see an ASCII art tree of all the branches, decorated with the names of tags and branches:
+ git log --graph --oneline --decorate --all
+ See only which files have changed:
+ git log --name-status
+ These are just a few of the possible parameters you can use. For more, see
+ git log --help
+ replace local changes
+
+ git checkout -- <filename>
+ this replaces the changes in your working tree with the last content in HEAD. Changes already added to the index, as well as new files, will be kept.
+
+ git fetch origin
+ git reset --hard origin/master
+ useful hints
+
+ gitk
+ use colorful git output
+ git config color.ui true
+ show log on just one line per commit
+ git config format.pretty oneline
+ use interactive adding
+ git add -i
+ links & resources
+ graphical clients
+
+
+
+ guides
+ get help
+ git - the simple guide
中文,
한국어
Vietnamese
+ العربية
please report issues on github
- it's recommended to create tags for software releases. this is a known concept, which also exists in SVN. You can create a new tag named 1.0.0 by executing
- git tag 1.0.0 1b2e1d63ff
- the 1b2e1d63ff stands for the first 10 characters of the commit id you want to reference with your tag. You can get the commit id by looking at the...
+ يقوم git بشكل آلي بإعطاء كل صورة زمنية رقماً فريداً و يمكن بشكل اختياري إرفاق وسم بهذا الرقم الفريد, و غالباً ما يتم إعطاء الوسم للصورة الزمنية الخاصة بإصدار ما مثلاً version_1.0.0 عن طريق تنفيذ الأمر
+ git tag version_1.0.0 1b2e1d63ff
+ حيث أن 1b2e1d63ff تمثل الخانات العشرة الأولى من رقم الصورة الزمنية الفريد
+ ملحوظة: يمكن الحصول على رقم الصورة الزمنية من خلال الأمر
+ git log
- in its simplest form, you can study repository history using..
+ يمكنك قراءة سجل تاريخ الصور الزمنية الخاص بالمستودع من خلال الأمر
git log
- You can add a lot of parameters to make the log look like what you want. To see only the commits of a certain author:
+ و بالطبع يمكنك تمرير بعض الوسائط لتخصيص نتيجة العرض فملاً للبحث عن الصور الزمنية التي أنشأها bob فقط نقوم بتنفيذ الأمر:
git log --author=bob
- To see a very compressed log where each commit is one line:
+ و لعرض النتائج على شكل سطر واحد لكل صورة زمنية ننفذ الأمر كمايلي:
git log --pretty=oneline
- Or maybe you want to see an ASCII art tree of all the branches, decorated with the names of tags and branches:
+ و يمكنك عرض تاريخ السجل بشكل بياني يوضع الفروع المختلفة من خلال الأمر:
git log --graph --oneline --decorate --all
- See only which files have changed:
+ و لعرض الملفات المتغيرة فقط:
git log --name-status
- These are just a few of the possible parameters you can use. For more, see
+ ما سبق عرضه هو جزء يسير من كمية كبيرة من البارامترات التي تخصص عرض السجل, للاطلاع على كافة البارامترات يمكنك تنفيذ الأمر
git log --help
- In case you did something wrong, which for sure never happens ;), you can replace local changes using the command
- git checkout -- <filename>
- this replaces the changes in your working tree with the last content in HEAD. Changes already added to the index, as well as new files, will be kept.
+ في حال ارتكابك خطأ ما في أحد الملفات و رغبتك بإعادة هذا الملف لحالته التي كان عليها عند أخذ آخر صورة زمنية يمكنك استخدام الأمر
+ <git checkout -- <filename
- If you instead want to drop all your local changes and commits, fetch the latest history from the server and point your local master branch at it like this
+ أما في حال رغبتك بالعودة بكامل مجلد العمل الحالي إلى آخر صورة زمنية تم أخذها يمكنك القيام بمايلي:
git fetch origin
git reset --hard origin/master
- built-in git GUI
+ واجهة أوامر مرئية لـ git
gitk
- use colorful git output
+ لجعل خرج git ملوناً
git config color.ui true
- show log on just one line per commit
+ عرض سطر واحد لكل صورة زمنية في السجل بشكل افتراضي
git config format.pretty oneline
- use interactive adding
+ الإضافة بشكل تفاعلي
git add -i
comments
+ + + +