diff --git a/css/style.ar.css b/css/style.ar.css new file mode 100644 index 00000000..a6565d0b --- /dev/null +++ b/css/style.ar.css @@ -0,0 +1,179 @@ +body { + background: #FFF; + font-family: Georgia, Simplified Arabic, Times New Roman, Times, serif; + font-size: 24px; + text-align: center; + margin: 0; + padding: 0; + direction: rtl; +} + +h1 { + font-size: 60px; + font-weight: normal; + margin: 0; + font-family: 'Chelsea Market', Simplified Arabic, Georgia, serif; + color: #000; + line-height: 1; +} + +h2 { + font-size: 70px; + font-weight: normal; + margin: 0; + color: #FFB000; + font-family: 'Chelsea Market', Simplified Arabic, Georgia, serif; + text-transform: lowercase; +} + +h3 { + font-size: 40px; + font-weight: normal; + margin: 0; + margin-top: 40px; + text-transform: lowercase; +} + +p { + width: 960px; + margin: 40px auto; + color: #000; + line-height: 200%; +} + +a, a:visited { + color: #000; + font-size: 12px; + text-decoration: none; +} + +a:hover { + text-decoration: underline; +} + +ul { + list-style: none; +} + +.download { + padding: 10px; +} + +pre { + font-size: 18px; +} + +blockquote { + text-align: left; + width: 720px; + margin: 10px auto; + background: #C5C3DE; + border: solid 2px #69697A; + padding: 0 40px; +} + +code { + background-color: #000; + font-style: normal; + border-radius: 10px; + color: white; + padding: 5px 15px; + font-family: menlo, monospace; + direction: ltr !important; + text-align: left !important; +} + +/*---------------------------------------- BLOCKS */ + +.scrollblock { + position: relative; + margin: 0; + width: 100%; + color: white; + padding-top: 80px; + padding-bottom: 80px; +} + +.scrollblock h2 { + +} + +.block-title { background-color: #FFF; padding-bottom: 50px; } +.block-title h2 { color: #000; } +.block-title .meta { font-size: 16px; color: #999; } +.block-title .meta a { font-size: 16px; color: #333; } +.block-setup { background-color: #348fd4; } +.block-setup h2 { color: #06406c; } +.block-setup h2 a { background: none; padding: 0; font-size: normal; } +.block-setup a { color: #FFF; font-size: 40px; font-weight: normal;font-style: normal; background-color: #06406c; padding: 10px 15px; border-radius: 10px; text-decoration: none; } +.block-setup a:hover { text-decoration: underline; } +.block-create { background-color: #06406c; } +.block-create h2 { color: #FFF; } +.block-create p { color: #FFF; } +.block-create code { background-color: #000; color: #FFF; } +.block-checkout { background-color: #FFF; } +.block-checkout h2 { color: #000; } +.block-trees { background-color: #4c0d09; } +.block-trees h2 { color: #d3b2af; } +.block-trees p { color: #d3b2af; } +.block-trees code { color: #000; background-color: white; } +.block-add { background-color: #cc4037; } +.block-add h2, .block-add p { color: #4c0d09; } +.block-remote { background-color: #ffc19f; } +.block-remote h2 { color: #cc4037; } +.block-branching { background-color: #000; } +.block-branching h2 { color: #FFF; } +.block-branching p { color: #DDD; } +.block-branching code { color: #000; background-color: white; } +.block-merging { background-color: #F2F2F2; } +.block-merging h2 { color: #666; } +.block-tagging { background-color: #F2F2F2; } +.block-tagging h2 { color: #FFF; } +.block-hints { background-color: #F2F2F2; } +.block-hints h2 { color: #FFF; } +.block-resources { background-color: #ffc19f; } +.block-resources h2 { color: #cc4037; } +.block-resources h3 { color: #7d1f19; } +.block-resources ul { list-style: disc; margin: 0; padding: 0; } +.block-resources ul li a { font-size: 24px; color: #cc4037; } +.block-tagging { background-color: #348fd4; } +.block-tagging h2 { color: #06406c; } +.block-hints { background-color: #06406c; } +.block-hints h2 { color: #FFF; } +.block-hints p { color: #FFF; } +.block-hints code { background-color: #000; color: #FFF; } +.block-checkout-replace { background-color: #fff8c9; } +.block-checkout-replace h2 { color: #2d2700; } +.block-checkout-replace p { color: #615400; } +.block-comments { background-color: #FFF; padding-bottom: 50px; font-size: 14px; color: #000; } +.block-comments h2 { color: #000; } +.block-comments h3 { font-size: 16px; } +.block-comments #disqus_thread { width: 600px; text-align: left; margin-left: auto; margin-right: auto; } + +.tower { + display: block; + width: 180px; + height: 260px; + position: absolute; + top: 330px; + right: 0; + background: #FFF url(../img/git-tower.png) no-repeat; +} + +.cheatsheet { + display: block; + width: 180px; + height: 250px; + position: absolute; + top: 346px; + left: 0; + background: #FFF url(../img/cheatsheet.png) no-repeat; +} + +.announcement { + margin-bottom: 40px; +} + +.announcement img { + border-radius: 4px; +} diff --git a/index.ar.html b/index.ar.html new file mode 100644 index 00000000..04987fae --- /dev/null +++ b/index.ar.html @@ -0,0 +1,276 @@ + + + + + + دليل git المبسّط + + + + + + + +
+

git - الدليل المبسّط

+

الشرح الأبسط لنظام إدارة الإصدارات git

+ غرّد عبر تويتر + +

+ حقوق الإصدار الأصلي محفوظة لـ: Roger Dudler + +
+ حقوق الترجمة محفوظة لـ: مختار سيّد صالح + +
هذا الدليل متوفر أيضاً باللغات: + this guide in + deutsch, + español, + français, + indonesian, + italiano, + nederlands, + polski, + português, + русский, + türkçe, +
+ မြန်မာ, + 日本語, + 中文, + 한국어 + Vietnamese + العربية +
+ يرجى الإبلاغ عن أي خطأ في الترجمة من خلال الرابط: github +

+ + +
+ + +
+

الإعداد

+

+ الإعداد لحواسيب ماكنتوش +

+

+ الإعداد لمختلف إصدارات ويندوز +

+

+ الإعداد لمختلف توزيعات لينكس +

+
+ +
+

إنشاء مستودع جديد

+

+ عند بداية كل مشروع نقوم بتنفيذ الأمر التالي بعد الانتقال إلى مجلد المشروع
+ git init
+ و ذلك لإنشاء مستودع جديد ضمن مجلد المشروع. +

+
+ +
+

العمل مع مستودع موجود مسبقاً

+

+ للعمل مع مستودع موجود مسبقاً يجب أن تقوم بنسخه إلى الجهاز الحالي عن طريق الأمر التالي مع مراعاة تغيير المسار
+ git clone /path/to/repository
+ و هذا في حال كون المستودع القديم موجوداً ضمن نفس الجهاز
أمّا في حال كونه مستودعاً بعيداً عبر الانترنت فيتم نسخه باستخدام الأمر التالي مع مراعاة تغيير المسار و بيانات الوصول
+ git clone username@host:/path/to/repository +

+
+ +
+

كيف يعمل نظام git

+

+ "الشجرة" بنية معطيات معروفة, و يتكون كل مستودع git من ثلاث "أشجار" تتم إدارتها آلياً.
+ تمثل الشجرة الأولى مجلد العمل الحالي Working Directory و هي ببساطة نسخة مطابقة تماماً في كل لحظة لمجلد العمل الحالي في تلك اللحظة.
+ أمّا الشجرة الثانية فهي شجرة الفهرس Index التي يتم استعمالها كمرحلة انتقالية تمر بها ملفات العمل الحالية قبل أخذ صورة عنها commit في لحظة زمنية ما.
+ و أمّا الشجرة الثالثة فهيشجرة التاريخ و تحوي مجموعة الصور الزمنيّة commits الخاصة بمشروعنا منذ بدايته و يشير المتغير الخاص HEAD إلى عنوان آخر صورة مضافة لشجرة التاريخ. +

+ +
+ +
+

أمرا add & commit

+

+ يستخدم الأمر add لإضافة التغييرات التي طرأت على ملف ما أو مجموعة من الملفات إلى شجرة المرحلة الانتقالية تمهيداً لأخذ صورة زمنية عنه كمايلي:
+ git add filename
+ * git add
+ و يتم أخذ الصورة الزمنية بشكل فعلي من خلال الأمر
+ "git commit -m "Commit message
+ حيث يتم إرفاق الرسالة الخاصة بالصورة لعرضها لاحقاً كتسمية تدل على هذه الصورة و بالتالي يصبح الـ HEADالآن مشيراً إلى الصورة الأخيرة التي أخذت للتوّ. +

+
+ +
+

إرسال الصور الزمنية للمستودع البعيد

+

+ لإرسال الصور الزمنية commits المأخوذة إلى المستودع البعيد نقوم بتنفيذ الأمر التالي:
+ git push origin master
+ ملحوظة: يمكنك تغيير master لأي فرع ترغب بإرسال الصور الزمنية إليه. +

+ إذا كان مستودع git الذي تعمل عليه حالياً مستودعاً خاصاً بك و لم تقم باستنساخه من مكان آخر, و كنت ما تزال ترغب بإرساله لمخدم بعيد يمكنك عندها إضافة هذه المخدم كـ origin باستخدام الأمر
+ <git remote add origin <server
+ و الآن أصبح بمقدورك إرسال الصور الزمنية إلى المستودع البعيد
+ +

+
+ +
+

الفروع

+

+ تستخدم الفروع Branches لتطوير ميزات برمجية مستقلة عن بعضها البعض و ذلك بغية منع عملية التطوير من التأثير على سير التطبيق الأصلي.
في العادة يعتمد الفرع master كفرع افتراضي لأي مستودع git و يتم التفريع منه من أجل كل ميزة جديدة ثم و عند تجربة الميزة و استقرارها يتم دمج فرعها مرة أخرى بالفرع master و هكذا. +

+ +

+ لإنشاء فرع جديد اسمه "feature_x" و الانتقال إليه ننفذ الأمر
+ 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 +

+
+ +
+

الوسوم

+

+ يقوم git بشكل آلي بإعطاء كل صورة زمنية رقماً فريداً و يمكن بشكل اختياري إرفاق وسم بهذا الرقم الفريد, و غالباً ما يتم إعطاء الوسم للصورة الزمنية الخاصة بإصدار ما مثلاً version_1.0.0 عن طريق تنفيذ الأمر
+ git tag version_1.0.0 1b2e1d63ff
+ حيث أن 1b2e1d63ff تمثل الخانات العشرة الأولى من رقم الصورة الزمنية الفريد
+ ملحوظة: يمكن الحصول على رقم الصورة الزمنية من خلال الأمر
+ git log +

+
+ +
+

سجل الصور الزمنية

+

+ يمكنك قراءة سجل تاريخ الصور الزمنية الخاص بالمستودع من خلال الأمر
+ git log
+ و بالطبع يمكنك تمرير بعض الوسائط لتخصيص نتيجة العرض فملاً للبحث عن الصور الزمنية التي أنشأها bob فقط نقوم بتنفيذ الأمر:
+ git log --author=bob
+ و لعرض النتائج على شكل سطر واحد لكل صورة زمنية ننفذ الأمر كمايلي:
+ git log --pretty=oneline
+ و يمكنك عرض تاريخ السجل بشكل بياني يوضع الفروع المختلفة من خلال الأمر:
+ git log --graph --oneline --decorate --all
+ و لعرض الملفات المتغيرة فقط:
+ git log --name-status
+ ما سبق عرضه هو جزء يسير من كمية كبيرة من البارامترات التي تخصص عرض السجل, للاطلاع على كافة البارامترات يمكنك تنفيذ الأمر
+ git log --help
+

+
+ +
+

التراجع عن التعديلات المحلية

+

+ في حال ارتكابك خطأ ما في أحد الملفات و رغبتك بإعادة هذا الملف لحالته التي كان عليها عند أخذ آخر صورة زمنية يمكنك استخدام الأمر
+ <git checkout -- <filename
+

+

+ أما في حال رغبتك بالعودة بكامل مجلد العمل الحالي إلى آخر صورة زمنية تم أخذها يمكنك القيام بمايلي:
+ git fetch origin
+ git reset --hard origin/master +

+
+ +
+

ملحوظات مفيدة

+

+ واجهة أوامر مرئية لـ git
+ gitk
+ لجعل خرج git ملوناً
+ git config color.ui true
+ عرض سطر واحد لكل صورة زمنية في السجل بشكل افتراضي
+ git config format.pretty oneline
+ الإضافة بشكل تفاعلي
+ git add -i +

+
+ +
+

مصادر

+

واجهات مرئية لـ git

+

+

+

+

شروحات

+

+

+

+

تواصل مع الخبراء

+

+

+

+
+ +
+

التعليقات

+
+ + +
+ + + + diff --git a/index.html b/index.html index 09dda754..e462dd84 100644 --- a/index.html +++ b/index.html @@ -50,6 +50,7 @@

git - the simple guide

中文, 한국어 Vietnamese + العربية
please report issues on github