hasan_aljudy

هل هناك مقالات باللغة العربية حول Git؟

38 ردود في هذا الموضوع

السؤال كما العنوان: هل هناك مقالات باللغة العربية حول git؟

لا ادري لماذا و لكني لم اسمع الكثير عن ادوات الـ source control في مواقع البرمجة العربية, و لم الاحظ اي تشجيع لاستخدام هذه الادوات, ولا دروسا او مقالات عنها.

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

لان لا احد يا حسن يسمع عنها او لا يدرى ما فائدتها و بالتالى توقع من عدم استخدامها

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

للأسف لم أصادف مثل هذه المقالة

ولك الشرف لو تكتب واحدة :)

1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
لان لا احد يا حسن يسمع عنها او لا يدرى ما فائدتها و بالتالى توقع من عدم استخدامها

انا في الحقيقة كنت اسمع عن svn و اعرف انه فقط يساعد في التعاون بين عدة مبرمجين على مشروع واحد, لكن لم اكن اعره اهتماما كثيرا و لم اكن اظن ان له فائدة كبيرة, استخدمت شيئا بسيطا منه بعض المرات لكن في كثير من الاحيان كنت اخربط لاني لم اكن افهم كيف يعمل.

لكني لاحظت الكثير من المبرمجين في المواقع الاجنبية (بالتحديد ستاك اوفر فلو) يصرون على انه لا غنى عن مثل هذه الادوات, و ذلك ما دفعني اكثر ان احاول تعملها و الاستفادة منها,

و الان اظن انني لا استطيع ان استغني عن git ابدا في اي مشروع مهما كان صغيرا

للأسف لم أصادف مثل هذه المقالة

ولك الشرف لو تكتب واحدة :)

ههه .. ليش لا فكرة حلوة :lol:

1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

و الله بجد أخي حسن,

المبرمجون يصرون على أنها سبب من أسباب نجاح المشاريع!

و لكن للأسف نحن طلاب الجامعات :lol: لاندري ماهي الـ source control أصلاً, لأن البرنامج ما إن يتم وضع درجته حتى يرمى في سلة المهملات :P

لو تعطينا فكرة عن الفائدة من وارئها, و مالذي سنخسره لو قمنا بتنظيم ملفاتنا يدوياً, و الفكرة العامة من واءها, تكون مهدت لنا الطريق لقراءة الـ tutorials :)

تحياتي ...

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
لو تعطينا فكرة عن الفائدة من وارئها, و مالذي سنخسره لو قمنا بتنظيم ملفاتنا يدوياً, و الفكرة العامة من واءها, تكون مهدت لنا الطريق لقراءة الـ tutorials

الطريقة اليدوية عادة تدور حول اخذ نسخة من المشروع في صورته الحالية و ضغطه و ارشفته (مثلا على شكل zip او rar) و اضافة رقم الى الملف مثل رقم الاصدار او تاريخ اليوم و من ثم حفظ هذا الارشيف في مجلد منفصل.

مثلا قد يكون لديك مشروع في مجلد اسمه my_project, فستجد بجانب المجلد عدة ملفات على مثال:

my_project_1.zip

my_project_2.zip

my_project_3.zip

...

...

my_project_20.zip

my_project_21.zip

...

...

الخ

الهدف عادة من هذه الطريقة هي الاحتفاظ بنقطة رجوع, مثلا لو حصلت خربطة كبيرة في المشروع و اصبح الكود مليان اخطاء و لم تعرف كيف تعيد الامور كما كانت, تستطيع حذف المشروع و استعادته من آخر نسخة مؤرشفة.

هذه المشكلة (اي اللخبطة الكبيرة) قد تحدث عندما تحاول تطبيق فكرة جديدة و ثورية, و لكن في منتصف الطريق تكتشف ان الفكرة غير قابلة للتطبيق, او انها معقدة جدا و ستاخذ وقت طويل .... او غير ذلك.

المشكلة في هذا النوع من العمليات, اي الافكار الجديدة, او التطويرات الكبيرة اللتي قد تستغرق وقتا, هي ان المشروع سيكون "غير صالح للاستخدام" لفترة من الزمن, اي الى ان يتم الانتهاء من اضافة التطوير, و هذا طبعا لو نجح التطوير, حيث ان المشكلة الاخرى هي احتمال ان الفكرة قد تفشل و يجب التخلص منها و العودة بالمشروع الى ما كان عليه.

هذه المشكلة قد تكون عائقا نفسيا امام المبرمج تمنعه من اضافة افكار ثورية او تطويرات نوعية للمشروع, لانه لا يريد ان يدوخ نفسه بالتعامل مع كل المشاكل المحتملة.

الهدف من git هو تسهيل هذا النوع من المهام, كيف؟

قبل ان نتحدث عن كيف اريد اولا ان اعرف هل الكلام اللذي قلته لحد الان منطقي؟ هل سبق و ان عانيت من مثل تلك المشاكل؟

لانه لا فائدة من الحديث عن الحلول اللتي يقدمها git اذا لم تكن اصلا متفقا معي ان المشكلة موجودة.

المشكلة الكبيرة برأيي هي العائق النفسي امام التطويرات النوعية للمشروع, بسبب المشاكل المصاحبة لهذه التطويرات. حيث انك لو جربت مثل هذا الامر في السابق, سيصيبك نوع من الاحباط يمنعك من محاولته مرة ثانية, لانك تعرف معنى تلك المعاناة و لا تريد ان توجع راسك بها مرة اخرى.

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

جميل أخي حسن :)

من لم يقع في المشكلة التي ذكرتها لا أعتقد أنه لمس لوحة المفاتيح :lol:

طيب, هل تنصح بـ git ؟!

هل هو سهل الاستخدام, و الأفضل أن أستطيع العمل من خلال Windows :) لأني أعمل عليه باستمرار حالياً...

الشيء الذي لم أفهمه, هو كيف تتم إضافة التعديلات ؟

يعني أنا كتبت الكود, و حفظت الملف, كيف أضيف الملفات إلى الـ repository ؟!

و إذا حصل تغيير بالملف بعد فترة, كيف أعتمد التعديل ؟

هل بإمكاني التراجع إلى أي فترة سابقة للكود ؟

و بالأخير هل هي عملية diff, لا أكثر و البرامج تقوم بأتمتة ا لعملية لنا ؟

إضافة إلى ذلك هل يجب توافر server, هل يمكن أن أعمل على جهازي فقط ؟

أم أن git و معظم البرامج تعمل على شكل web application و clients تتصل بها ؟

أسئلة كثيرة, بس منكم نستفيد :)

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

الموضوع لا يتعلق فقط بال Source Control Management بل بال Software Configuration Management

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
جميل أخي حسن regular_smile.gif

من لم يقع في المشكلة التي ذكرتها لا أعتقد أنه لمس لوحة المفاتيح laugh.gif

جميل جدا, اذن نحن على نفس الصفحة :)

طيب, هل تنصح بـ git ؟!

هل هو سهل الاستخدام, و الأفضل أن أستطيع العمل من خلال Windows regular_smile.gif لأني أعمل عليه باستمرار حالياً...

طبعا طبعا, من ناحية السهولة انا اراه سهل :)

من ناحية الوندوز بالتاكيد يعمل على وندوز

...

إضافة إلى ذلك هل يجب توافر server, هل يمكن أن أعمل على جهازي فقط ؟

أم أن git و معظم البرامج تعمل على شكل web application و clients تتصل بها ؟

في الحقيقة git يعتبر ثورة نوعية في هذا المجال, و هو مختلف كثيرا عن اغلب الانظمة الاخرى.

في السابق كان هناك cvs و يمكن القول انه اكثر نظام متخلف و لا ينصح به ابدا. طبعا هناك انظمة قبله اكثر تخلفا :)

ثم هنالك svn, و هدف المشروع كما يقول مطوروه هو تصحيح المشاكل الموجودة في cvs, على كل حال هذا تاريخ طويل انا نفسي لا اعرفه (بالحقيقة لا اعرف شيئا عن CVS سوى ما اسمع عن تخلفه و غبائه).

svn و cvs و ما قبلهما, يمكننا ان نسميها بالانظمة التقليدية, و هي تستخدم نظام server & client

لكن لا داعي للدخول في تلك التفاصيل, لانها بدون فائدة تذكر, و لان الانظمة السابقة (القديمة) ليست لها فائدة كبيرة سوى حفظ تاريخ التطوير, و لا شيء اخر تقريبا. يعني تقريبا بدون فائدة :lol:

نأتي الى git,

git يعمل كبرنامج مستقل, لا سرفر و لا كلاينت ولا شيء من وجع الراس هذا.

بالنسبة لي, هناك فائدتين لـ git تجعله ضروري لاي مبرمج, حتى لو كان لا يعمل سوى على مشاريع بسيطة.

أولا: حفظ التاريخ, و امكانية العودة في اي وقت الى اي نقطة في تاريخ المشروع, و ليس فقط العودة, بل مراجعة التغييرات اللتي قمت بها.

هذه العملية (اي حفظ تاريخ المشروع) تتم عن طريق امر commit من فترة لاخرى. عندما تعطي هذا الامر, يتم اخذ نسخة snapshot من المشروع و ايداعها في الـ respository (المستودع؟).

تاريخ المشروع سيكون عبارة عن سلسلة الايداعات هذه. كل commit لديها parent commit و كل commit لديها معرف identifier يشار به اليها, فيمكنك العودة الى اي commit في اي وقت.

طبعا العملية ليست مجرد نسخ الملفات الى مكان معين و بس, (ربما بعض الادوات البدائية القديمة كانت تفعل ذلك؟), بل يتم حفظ الملفات في قاعدة بيانات خاصة و مضغوطة بشكل فضيع.

الفائدة الثانية و الاهم: branching

لا اعرف كيف اترجمها بالعربي, اظن "تفرع" تفي بالغرض.

لنفترض ان عندك الوضع التالي: عندك مشروع يعمل بطريقة معينة, و جائتك فكرة جديدة ستتطلب تطوير نوعي قد تطول مدته, و في نفس الوقت هناك بعض المشاكل او الـ bugs اللتي تحتاج الى اصلاح. ماذا تفعل؟

تعمل فرع branch جديد, و الان صار عندك فرعين two branches, الاول هو الفرع الاصلي master branch و الاخر هو الفرع اللذي ستطور به الفكرة الجديدة topic branch

انت الان في الفرع الاصلي master, تقوم ببعض عمليات الصيانة, تحسين الكود, اضافة تعليقات, اصلاح اخطاء, الخ. و تقوم بايداع التغييرات commit

ثم تنتقل الى الـ topic branch و تحاول العمل على تطوير الفكرة الجديدة. يعني تقوم مثلا بشيء بدائي, او هيكل بسيط, و تقوم بايداع التغييرات.

تعود بعد ذلك الى الفرع الاصلي (لانك مثلا تريد تشغيل البرنامج/المشروع للقيام بشيء ما), و تستمير في تحسينه و اصلاح الاخطاء, و لا تسنى ان تقوم دائما بـ commit للتغيرات اللتي تقوم بها باستمرار.

تعود مرة اخرى للفرع الاخر topic و تستمر في تطوير الفكرة الجديدة و دائما commit

الان لدينا فرعين لتطوير البرنامج: الفرع الرئيسي لا زال البرنامج فيه يعمل بالشكل المعتاد, و لا زلت تواصل عمليات الصيانة و الاصلاح باستمرار.

و في شارع موازي, هناك فرع تطور فيه خاصية جديدة, في هذا الفرع ربما البرنامج الان لا يعمل, لانك ربما مسحت الكثير من الاكواد القديمة, او ما شابه ذلك.

التطويرات اللتي تحصل في الفرعين منفصلة عن بعض, بمعنى انك عندما تصلح bug في الفرع الرئيسي, فإن هذا الاصلاح لن يطبق على الفرع الثاني, بل فقط على الرئيسي. و بنفس الوقت, حين تقوم بتطوير الفكرة الجديدة في الفرع الثاني, فإن كل التغييرات تنحصر في الفرع الثاني فقط, و لا يتم تطبيقها على الفرع الاول.

طيب, لنفرض انك تريد ان تطبق الـ bug fixes اللتي قمت بها على الفرع الرئيسي على الفرع الثاني ايضا, ماذا تفعل؟

تذهب الى الفرع الثاني و تطلب من git ان يقوم بدمج الفرع الاول الى الفرع الثاني (و انت في الفرع الثاني).

حين تتم عملية الدمج, سيكون الفرع الرئيسي لا يزال كما هو, و لكن كل ما في الامر ان الفرع الثاني الان استفاد هو ايضا من الاصلاحات اللتي قمت بها على الفرع الاول.

طبعا, قد يحدث احيانا ان يكون هناك تضارب conflict بين التغييرات في الفرعين, مثلا ملف معين تم تغييره كليا في الفرع الثاني, و لكن في الفرع الاول قمت باعمال صيانة بسيطة عليه. اذا حدث مثل هذا فيجب ان تستخدم اداة اخرى لاصلاح التضارب, و لكن بشكل عام فإن الدمج بين الافرع في git يتم بشكل اوتوماتيكي, حيث ان git يعرف تاريخ المشروع و يعرف ما هي التغييرات اللتي قمت بها.

لاحظ ان عملية الدمج لا تغلي اي من الفرعين, كل ما في الامر استعارة التعديلات من الفرع الاول و تطبيقها على الفرع الثاني.

لاحظ ايضا انك لم تخسر شيئا من تطبيق فكرتك الجديدة: فالبرنامج لا يزال يعمل كما هو, و يمكنك مثلا ان تتكاسل عن تطوير الفكرة الجديدة لفترة من الزمن, و تستمر في تطوير البرنامج في الفرع الرئيسي, و ايضا تستمر في استخدامه, و يمكن بعد اسبوع سوف تتذكر التطوير الجديد اللذي نسيته و تعود لاكمال عملك عليه. -- هذا اهم شيء في الموضوع: git يشجعك على القيام باكثر من فرع للتطوير, في كل فرع تطور امر مختلف, بحيث يكون بالك دائما مرتاح, و لا تخاف من ان يتحول المشروع الى كابوس بسبب بعض الافكار الثورية.

بعد فترة من التطوير بهذه الطريقة, لنفرض ان التطوير الجديد وصل الى حالة مقبولة, و قمت بتجربته لفترة من الزمن, و وجدت انه بشكل عام ناجح, و يحتاج فقط الى المزيد من الصيانة و التحسين (مثله مثل بقية البرنامج). عند ذلك, تذهب الى الفرع الرئيسي master و تقوم بدمج الفرع الثاني topic branch الى الفرع الرئيسي (اي تطبيق التغييرات اللتي تمت في الفرع الثاني الى الفرع الاول). هذه العملية عادة سهلة جدا و سريعة جدا.

و هذه خاصية مميزة في git, بينما الانظمة الاخرى مثل svn لا تتمتع بهذه الميزة.

اما لو فشلت الفكرة و وصلت الى طريق مسدود و قررت التخلي عنها, بمكنك الغاء الفرع الخاص بتلك الفكرة, و ستواصل عملك في الفرع الرئيسي و كأن شيئا لم يكن.

هل وصلت الفكرة؟

لاحظ انني لحد الان لم اتكلم عن كيفية استخدام git مطلقا, بل حاولت فقط ان اشرح فائدته و ان ابين لماذا لا يمكن الاستغناء عنه.

4

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
و هذه خاصية مميزة في git, بينما الانظمة الاخرى مثل svn لا تتمتع بهذه الميزة.

شكرا جزيلا على المقارنة بين أنظمة source control الخاصة بتطوير الأنظمة المفتوحة.

ولإثراء الموضوع، نأمل المقارنة مع نظام Tortoise، أو مع أنظمة Source control المغلقة، مثل Visual Source Safe

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

ومنكم نستفيد ...

واصل اخي بارك الله فيك وبعلمك ..

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
شكرا جزيلا على المقارنة بين أنظمة source control الخاصة بتطوير الأنظمة المفتوحة.

ولإثراء الموضوع، نأمل المقارنة مع نظام Tortoise، أو مع أنظمة Source control المغلقة، مثل Visual Source Safe

لست هنا بصدد المقارنة, صحيح انني متحيز لـ git و لكن ما دام هذا التحيز ضد الانظمية التقليدية مثل svn فاعتقد انه تحيز مبرر

هناك انظمة اخرى من الجيل الجديد مثل merculier و لكني اعرف git و استخدمه, لهذا فحديثي هو عنه.

نظام svn ايضا يسمح لك بانشاء فروع branches بسهولة, و لكن المشكلة فيه و في غيره من الانظمة التقليدية هي صعوبة الدمج merging مما يعيدنا الى النقطة الاولى: عائق نفسي يمنع المبرمج من ان يحاول او مجرد ان يفكر في محاولة عمل مثل هذا. اما في git فالـ merge سهل جدا,و حتى في حالة حدوث تضاربات, يمكن في الغالب حلها يدويا في نصف دقيقة.

بالمناسبة, Tortoise ليس نظاما معينا بل مجرد واجهة رسومية تتعامل مع الانظمة المختلفة, هناك مثلا TortoiseSVN و هو ليس نظام مستقل بل واجهة رسومية لنظام svn

اما Source Safe فلا ادري عنه و لكن جميع الناس يحذرون منه, يبدو انه من اسوأ الانظمة, و هو قديم على كل حال.

هناك ايضا Perforce و لكنه فضلا عن كونه قديم فهو مغلق, يعني حتى لو كان الواحد دقة قديمة و مصر على الانظمة التقليدية, لا حاجة الى الانظمة المغلقة و المكلفة لان svn مجاني و في الغالب افضل من الانظمة الاخرى.

لا يوجد سبب الان لاستعمال اي من الانظمة التقليدية (الجيل القديم) ولا حتى svn, و اعني بذلك اذا كنت تفكر الان باستخدام source control tools فلا تفكر اصلا في الانظمة القديمة, فكر فقط في الانظمة الجديد مثل git, merculier, bazaar, monotone

هناك موقع يقارن git مع بقية الانظمة و هو متحيز تماما لصالح git

http://whygitisbetterthanx.com/

ومنكم نستفيد ...

واصل اخي بارك الله فيك وبعلمك ..

و فيك بارك الله اخي

بالحقيقة ليس لدي المزيد لاضيفه, يمكن ان استقبل اسئلة معينة و احاول ان اجيب عليها, و لكن اذا كان الكلام لحد الان خرط مشطك, انصحك بقرائة الـ official tutorial

http://www.kernel.org/pub/software/scm/git...ittutorial.html

انا شخصيا بدأت من هذا الـ tutorial و هو مفيد جدا,

لتحميل git على وندوز: http://code.google.com/p/msysgit/

بالمناسبة لا ادري ان كنت قد ذكرت ذلك ام لا, و لكن المبرمج اللذي بدأ مشروع git هو لينوس تورفالدس (صاحب اللينوكس!!)

و هنا فديو له يعطي حديثا حول git لدى كووكل

اعتقد ان الفديو يستحق المشاهدة

الموضوع لا يتعلق فقط بال Source Control Management بل بال Software Configuration Management

قد يكون الامر اختلاف في تفسير المصطلح SCM

لكن لينوس (مؤلف git) يقول ان scmبالنسبة له تعني Source control management و اللذي هو فقط جزء من Software configuration management

تم تعديل بواسطه hasan_aljudy
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

أفادك الله و أكثر من علمك

واصل أخى الكريم

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
لتحميل git على وندوز: http://code.google.com/p/msysgit/

شكرا على الرابط، ولكن ...

لم أستطع تنزيله بسبب أنني من إحدى الدول المحظورة!!!!

:huh:

هل يمكن إرفاقه أو رفعه على موقع آخر؟

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
شكرا على الرابط، ولكن ...

لم أستطع تنزيله بسبب أنني من إحدى الدول المحظورة!!!!

هل يمكن إرفاقه أو رفعه على موقع آخر؟

تفضل اخي الحبيب ..

http://www.box.net/shared/8jxtr1x7kq

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

ال Software Configuration Management يشمل ال Source Control و ال Build و ال Versioning

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

السلام عليكم ...

أتمنى لو كان عندك وقت فراغ أن تضع لنا مثالاً عن كيفية استعماله مع مشروع صغير على الجهاز :)

فهمت الفكرة, و لكن لم أستطع تطبيق ما فهمته على git بشكل كامل, ربما بمثال نستطيع فهم الموضوع بشكل أفضل :)

و تصبح أول عربي يتكلم عن هذا الموضوع :)

تحياتي ..

تم تعديل بواسطه Khaled.Alshaya
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
و تصبح أول عربي يتكلم عن هذا الموضوع

لماذا لا يكون أول مسلم ^^ <<<< الأسلام هو الحـل ..

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

لماذا لا يكون أول مسلم ^^ <<<< الأسلام هو الحـل ..

لا أستطيع أن أضع على ذمتي أنه أول مسلم :)

ربما هناك مسلم كتب درساً حول git بلغة الهونولولو :lol:

و لكني لم أرى باللغة العربية أي درس حول git, لذلك نقول أنه أول عربي :)

تحياتي ..

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
السلام عليكم ...

أتمنى لو كان عندك وقت فراغ أن تضع لنا مثالاً عن كيفية استعماله مع مشروع صغير على الجهاز :)

فهمت الفكرة, و لكن لم أستطع تطبيق ما فهمته على git بشكل كامل, ربما بمثال نستطيع فهم الموضوع بشكل أفضل :)

و تصبح أول عربي يتكلم عن هذا الموضوع :)

تحياتي ..

ماشي, ليش لا, بس جيب لي فكرة مشروع نطبق عليه :lol:

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

جميل جدا يا أخ حسن

انا تحمست وبدأت فى البحث.. ووجدت بعض ال Gui's فوق ال Git (غالبا احدثها هو ال Git Extensions )

فبماذا تنصح ال Console :S

أم Gui معينه ؟

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

السلام عليكم ...

ماشي, ليش لا, بس جيب لي فكرة مشروع نطبق عليه

و الله ما أدري :huh:

هل تريد أن نفكر في مشروع جديد ؟ أو أن نبدأ العمل على ملفات موجودة ؟

عموماً في المرفقات مشروع صغيرووووووووون قمت بكتابته من زماااان ربما نرى كيف نتحكم في عملية تطويره :)

المشروع عبارة عن برنامج تشفير, يعمل على الـ command line, ربما نقوم بتطويره لاكتشاف الأخطاء المدخلة لأني لم أتحقق من أي exception فيه ... إضافة إلى ذلك ربما نطوره قليلاً :)

قم بترجمة main.cpp فقط , أو إن كنت تعمل على VC فستجد ملفات الـ solution في الملف المضغوط مع الكود ...

تحياتي ...

EncAT.rar

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
جميل جدا يا أخ حسن

انا تحمست وبدأت فى البحث.. ووجدت بعض ال Gui's فوق ال Git (غالبا احدثها هو ال Git Extensions )

فبماذا تنصح ال Console :S

أم Gui معينه ؟

حلو.. حلو كتير اني حمستك :)

بالنسبة للـ gui هناك واجهة مبسطة تأتي مع git نفسه, و هناك ايضا tortoisegit لكني شخصيا افضل الـ command line

على الاقل في البداية

طبعا سطر الاوامر القادم مع وندوز cmd.exe متخلف شوية, لهذا انا استخدم console

هناك ايضا bash على وندوز ستحصل عليه اذا نزلت msysgit و لكني شخصيا لا استخدمه كثيرا. السبب الرئيسي هو انني افضل طريقة الوندوز في الـ path auto-completion

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
السلام عليكم ...

و الله ما أدري :huh:

هل تريد أن نفكر في مشروع جديد ؟ أو أن نبدأ العمل على ملفات موجودة ؟

عموماً في المرفقات مشروع صغيرووووووووون قمت بكتابته من زماااان ربما نرى كيف نتحكم في عملية تطويره :)

المشروع عبارة عن برنامج تشفير, يعمل على الـ command line, ربما نقوم بتطويره لاكتشاف الأخطاء المدخلة لأني لم أتحقق من أي exception فيه ... إضافة إلى ذلك ربما نطوره قليلاً :)

قم بترجمة main.cpp فقط , أو إن كنت تعمل على VC فستجد ملفات الـ solution في الملف المضغوط مع الكود ...

تحياتي ...

كويس اوي اوي اوي (على قولة المصريين)

تعرف, بالحقيقة بعد ما فكرت في الموضوع اكتشفت انه لا داعي ان اعمل ديمو على مشروع حقيقي, يكفي عدة فايلات عشوائية,

لكن وجود مشروع افضل اكيد

احب ان انوه لامر ما, و هو انني حاليا لن اكتب بديلا او ترجمة!) للدرس الاصلي:

http://www.kernel.org/pub/software/scm/git...ittutorial.html

يعني اتمنى تكون قاريه قبل ان تمشي معايا في "البتاع" اللي حاعمله

اولا فكيت المشروع عندي الى مجلد C:\code\encat

بعدين نفذت هذه الاوامر

C:\code\encat>git init
Initialized empty Git repository in C:/code/encat/.git/

C:\code\encat>git add *.cpp

C:\code\encat>git add *.h

C:\code\encat>git status
# On branch master
#
# Initial commit
#
# Changes to be committed:
# (use "git rm --cached <file>..." to unstage)
#
# new file: Console.h
# new file: EncAT.h
# new file: Random.cpp
# new file: Random.h
# new file: main.cpp
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# Debug/
# EncAT.ncb
# EncAT.sln
# EncAT.vcproj
# EncAT.vcproj.Toshiba.aljudy.user
# random.atp
# random.dec
# random.enc

C:\code\encat>git commit -m"Initial commit"
[master (root-commit) 618b61a] Initial commit
5 files changed, 712 insertions(+), 0 deletions(-)
create mode 100644 Console.h
create mode 100644 EncAT.h
create mode 100644 Random.cpp
create mode 100644 Random.h
create mode 100644 main.cpp

C:\code\encat>

المهم في البداية:

git init

لانشاء repository في المجلد الحالي, بعد تنفيذ هذا الامر سيكون هناك مجلد اسمه .git و هو يحتوي بداخله على الـ repository

ثم git add لاضافة الملفات اللتي نريد اضافتها الى الـ repository

هذا الامر لا يفعل شيئا سوى اخبار git اننا نريد ان نضيف هذه الملفات الى الـ repo

ثم git commit من اجل عمل commit لهذا الملفات داخل الـ repository مع اضافة commit message

لا ادري بالضبط كيف اترجم هذه المصلطحات و لكن القاموس التقني في عرب آيز يقترح

http://wiki.arabeyes.org/techdict:repository --- مستودع --- repository

http://wiki.arabeyes.org/techdict:commit --- ايداع --- commit

الان:

C:\code\encat>git log
commit 618b61a4c1f0d67c8cb7949ea15fd86ef794b582
Author: hasen j <[email protected]>
Date: Thu Jun 4 22:17:15 2009 -0600

Initial commit

C:\code\encat>

شغلت البرنامج و جربته, و كما قلت انه لا توجد مراجعة للاخطاء المحتملة, فمثلا اذا كتبت اسم ملف غير موجود, فالبرنامج سوف "يزوع"

لهذا يمكن اضافة check قبل فتح الملف و قرائته. بعد ان نضيف هذا نعمل commit من جديد

البقية في العدد القادم ان شاء الله :)

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

اريد ان اضيف بعض الملاحظات

msys هي عبارة عن بيئة لينكس مصغرة تعمل على الوندوز, طبعا ليست مزعجة مثل cygwin ابدا

و git مصمم اصلا للعمل على linux

العديد من الاوامر اللتي تصدرها الى git تمرر الجواب عبر برنامج less

بمعنى, اذا كان الـ output طويل, ستراه صفحة صفحة,

و حتى اذا كان الـ output قصير فايضا سيخرج عن طريق less

للخروج من less يجب ان تضغط q

و لتصفح الـ output يمكنك ذلك عن طريق الاسهم و المسافة, او عن طريق j و k

الملاحظة الاخرى, ان كل commit يجب ان يكون معها message قصيرة تبين فيها مثلا ما هي التغييرات اللتي حدثت بين هذا الايداع و الايداع (الـ commit) السابق.

يمكن اضافة هذه الرسالة عن طريق الخيار -m و لكن يمكن ايضا ترك هذا الخيار و سيتم اطلاق محرر نصوص لكي تكتب فيه الرسالة (اذا كنت مثلا تريد ان تكتب عدة اسطر بدل من سطر واحد, او رسالة طويلة نسبيا, الخ).

حاليا خلونا على -m لكي لا نعقد الامور

الملاحظة الاخرى, git log يريك سلسلة الايداعات commits اللتي اوصلتك للنقطة الحالية اللتي انت فيها. عادة ما يريك اياه مختصر جدا, حيث يريك فقط الـ SHA1 الخاص بالـ commit و هو في الحقيقة المعرف الخاص بذلك الايداع, اضافة الى ذلك يريك اسم الشخص اللذي قام بالايداع و تاريخ الايداع, و كذلك الرسالة المصاحبة.

يمكن اضافة بعض الخيارات الى الامر لكي يريك اكثر من ذلك, مثل ان يريك diff مع الايداع السابق (يعني يريك ماهو التغيير اللذي حصل على الكود), و اشياء اخرى.

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .