نظام التحكم في الإصدار - أيهما أفضل؟ نظام التحكم في الإصدارات git و svn وغيرها ، المقارنة. ماذا حدث

💖 أحببته؟شارك الرابط مع أصدقائك

كلكم يعرف نظام Git. على الأقل سمعته ، هذا أمر مؤكد. المطورون الذين يستخدمون النظام إما يحبونه أو يوبخونه لواجهته المعقدة وأخطاءه. يعد نظام التحكم في إصدار Git هو المعيار الصناعي الفعلي. قد يكون للمطور آراء حول فوائد Mercurial ، ولكن في أغلب الأحيان ، عليك أن تتحمل مطلب معرفة كيفية استخدام Git. مثل أي نظام معقد ، لديه العديد من الوظائف المفيدة والضرورية. ومع ذلك ، لا يحصل الجميع على بساطة بارعة ، لذلك ترك التنفيذ الحالي مجالًا للتحسين.

بكلمات بسيطة - كان من الصعب استخدام تطبيق صعب. لذلك ، في مختبر معهد ماساتشوستس للتكنولوجيا ، قاموا بإجراء تحسينات وقطعوا جميع "عناصر المشكلة" (بعد كل شيء ، ما يمثل مشكلة بالنسبة لأحدهم ، ويمكن أن يكون الآخر ميزة بسهولة). نسخة محسنة ومبسطة تسمى Gitless. تم تطويره باستخدام 2400 سؤال متعلق بـ Git مأخوذة من موقع مطور StackOverflow.

ما الخطأ في Git

اشتكى العديد من المستخدمين من أن Git يحتاج إلى واجهة جديدة. حتى أن الخبراء كتبوا وثيقة ما هو الخطأ في Git؟ تحليل التصميم المفاهيمي. المؤلفون: S. Perez De Rosso و D. Jackson.

مثال

بوابة الخروج< file >// تجاهل جميع التغييرات في ملف واحد منذ آخر عملية دفع.
هذان الخطان مجرد توضيح واحد لمدى احتياج Git لواجهة محسنة. هناك أمران مختلفان لنفس الوظيفة مع اختلاف واحد وهو أن أحدهما لملف واحد والآخر لملفات متعددة. جزء من المشكلة أيضًا هو أن هذين الأمرين لا يفعلان نفس الشيء بالضبط.

يستخدمه معظم مستخدمي Git لعدد صغير من الأوامر ، ويعرف القلة المتبقية النظام الأساسي على مستوى أعمق. اتضح أن النظام الأساسي ضروري من أجل وظائف أساسية، وتبقى طبقة كبيرة من الفرص لدائرة ضيقة جدًا. يشير هذا إلى أن Git لا يعمل بشكل صحيح.

مقارنة موجزة للوظائف الأساسية بالإصدار السابق

واحدة من الخصائص المدهشة لـ Gitless هي أنه يتجاهل ميزة تسمى التدريج. يسمح لك بحفظ أجزاء فردية من الملف. ملائم ، لكن يمكن أن يخلق مواقف إشكالية. الفرق الرئيسي بين هذا وميزة التخزين هو أن الأخير يخفي التغييرات من مساحة العمل.

تخفي وظيفة التخزين العمل الشاق في دليل العمل - الملفات المتعقبة التي تم تغييرها وتحفظ كل شيء على المكدس مع التغييرات المعلقة. يمكن تطبيق جميع التغييرات لاحقًا ، عندما يكون ذلك مناسبًا. هذا مطلوب عندما تعمل في فرع واحد وكل شيء في حالة فوضوية فيه ، لكنك تحتاج إلى التبديل بشكل عاجل إلى فرع آخر. أنت لا تريد سحب التعليمات البرمجية مع عمل تم إنجازه جزئيًا في الفرع الأول أثناء الإيقاف المؤقت.

تقوم وظيفة التدريج بفهرسة التغييرات التي تم إجراؤها على ملف. إذا قمت بتمييز الملفات على أنها مرحلية ، فإن Git يعرف أنك قمت بتنظيمها.

لا يوجد مفهوم للتخزين في Gitless. تخيل الموقف التالي. أنت في منتصف تطوير مشروع وتحتاج إلى التبديل إلى فرع آخر ، لكنك لم تقم بتحميل عملك نصف المكتمل بعد. تأخذ وظيفة التخزين التغييرات التي تجريها وتحفظها في المكدس المعلق ، والذي يمكنك استعادته لاحقًا.

يفيد مؤلف دليل Gitless أن المشكلة تظهر عند التبديل بين الفروع. قد يكون من الصعب تذكر أماكن المخبأ. حسنًا ، ذروة كل هذا هو أن الوظيفة لا تساعد إذا كنت في عملية دمج تتضمن ملفات متضاربة. هذا رأي بيريز دي روسو.

بفضل Gitless ، تم حل هذه المشكلة. أصبحت الفروع مستقلة تمامًا فيما يتعلق ببعضها البعض. هذا يجعل المهمة أسهل بكثير ويسمح للمطورين بتجنب ارتباك التبديل المستمر بين المهام.

حفظ التغييرات

يخفي Gitless منطقة المراحل بشكل عام ، مما يجعل العملية أكثر شفافية وأقل تعقيدًا للمستخدم. هناك أوامر "التزام" أكثر مرونة لحل المشكلات. علاوة على ذلك ، سيسمحون لك بالقيام بمثل هذه الإجراءات مثل إبراز مقاطع الكود للالتزام.


بالإضافة إلى ذلك ، يمكنك تغيير تصنيف أي ملف إلى قيم: متتبع أو غير متتبع أو متجاهل. لا يهم إذا كان هذا الملف موجودًا في الرأس أم لا.


عمليات التطوير المتفرعة

ضروري للفهم نسخة جديدة، الفكرة: أصبحت الفروع في Gitless خطوط تنمية مستقلة تمامًا. كل واحد منهم يبقى مع نسخة العمل الخاصة به من الملفات بشكل منفصل عن الآخرين. لا تقاطعات أو مشاكل. في أي وقت تقوم فيه بالتبديل إلى فرع آخر ، يتم حفظ محتويات مساحة العمل الخاصة بك واستعادة الملفات ذات الصلة بفرع الوجهة. يتم أيضًا الاحتفاظ بتصنيف الملف. إذا تم تصنيف الملف بشكل مختلف في فرعين منفصلين ، فسيأخذ Gitless ذلك في الاعتبار.


ببساطة ، مع Gitless ، لست مضطرًا لتذكر التغييرات غير الملتزمة التي تتعارض مع التغييرات في فرع الوجهة.


يمكنك أيضًا تأخير حل التعارض إذا كنت في منتصف عملية دمج أو مصهر. سيبقى الصراع حتى تعود مرة أخرى.


العمل مع المستودعات البعيدة

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


ميزة أخرى للإصدار الجديد هي القدرة على التبديل إلى الإصدار القديم دون فقدان الرمز. في الوقت نفسه ، قد لا يدرك زملاؤك أنك تستخدم برامج أخرى.

يمكنك قراءة دليل العمل مع Gitless على الموقع الرسمي للتطبيق. توضح الوثائق ما يلي: كيفية إنشاء مستودع وحفظ التغييرات ؛ كيف تعمل مع الفروع. كيفية استخدام العلامات والعمل مع المستودعات البعيدة.

ما هي النتيجة

والنتيجة هي تطبيق يحتفظ بوظائف Git ، ولكن في نفس الوقت أصبح التعلم واستخدام فرق التطوير أسهل. في الواقع ، قبل Gitless ، كانت هناك بالفعل محاولات لتحسين Git. ولكن وفقًا لفيليب جو (وهو أستاذ مساعد في العلوم المعرفية بجامعة كاليفورنيا في سان دييغو) ، فإن هذه النسخة حققت لأول مرة أهداف تحويل الواجهة وحل المشكلات الرئيسية فعليًا.
استخدم المشروع طرقًا صارمة للإبداع برمجة. يعد هذا ضروريًا لعزل أوجه القصور في أحد مشاريع البرامج الأكثر استخدامًا في العالم. في الماضي ، قدم العديد من المستخدمين حججًا سخيفة مؤيدة ومعارضة لـ Git ، لكن لم يكن أي منها مبنيًا على نهج علمي.

باستخدام Gitless كمثال ، يصبح من الواضح أنه يمكن تطبيق نهج التبسيط على أنظمة معقدة أخرى أيضًا. على سبيل المثال، صندوق بريد جوجلو Dropbox.

أثناء العمل في مشروع ما ، غالبًا ما يواجه المشاركون فيه مشكلات في المزامنة وسجل الملفات ، والتي تساعد أنظمة التحكم في الإصدارات (VCS) في حلها. الغرض من هذه السلسلة من المقالات هو تعريف القارئ بمبادئ عمل VCS والتفكير في أحدها بالتفصيل ، ألا وهو Git. لماذا جيت؟ في مؤخراهذا النظام يكتسب شعبية ، ولا يمكن المبالغة في تقدير أهميته للبرمجيات الحرة (ومشروع جنو / لينكس على وجه الخصوص).

نحن على الدوام بعبارات عامةسنقوم بتحليل خصائص أنظمة التحكم والتحدث عن بنيتها والميزات الرئيسية للتطبيق المعني. بالإضافة إلى ذلك ، سنراجع الواجهات الحالية للعمل مع Git.

يتجاهل المؤلف عمدًا مصطلحات الوظائف والمفاتيح وغيرها من التفاصيل الدقيقة من أجل تقديم الصورة لك بشكل واضح وواضح وبصورة عامة. تفترض هذه المقالة أن القارئ على دراية بأنظمة التشغيل الشبيهة بـ Unix (OS) ولديه معرفة أساسيةفي مجال الخوارزميات وعلوم الكمبيوتر بشكل عام.

في المواد التالية ، سوف نتعمق في بنية وفلسفة Git وخصائص هذا النظام ودقة العمل العملي به. ستنتهي الدورة بمقال عن تفاعل Git مع VCS الأخرى (مثل Subversion و CVS و Mercurial وما إلى ذلك).

2. Git هو ...

Git هو نظام تحكم في إصدار الملفات الموزعة. تمت كتابة كود البرنامج بشكل أساسي في C. تم إنشاء المشروع بواسطة Linus Torvalds في 2005 لإدارة تطوير نواة Linux ومثل GNU / Linux ، فهو برنامج مجاني (برنامج) ، بينما استخدام طرف ثالثيخضع لترخيص GNU GPL الإصدار 2. باختصار ، يمكن وصف هذه الاتفاقية على أنها برنامج كود مجاني يجب تطويره بشكل مفتوح ، أي يحق لأي مبرمج مواصلة تحسين المشروع في أي مرحلة. خلال فترة وجودها القصيرة هذا النظامتم تقديمه من قبل العديد من المطورين الرائدين. يتم استخدام Git في مشاريع مجتمع Linux المعروفة مثل Gnome و GNU Core Utilities و VLC و Cairo و Perl و Chromium و Wine.

3. أنظمة التحكم في الإصدار

أنظمة التحكم في الإصدار (أنظمة التحكم في الإصدار) هي برامج مصممة لأتمتة العمل مع محفوظات ملف (أو مجموعة ملفات) ، ومراقبة التغييرات ، ومزامنة البيانات ، وتنظيم مستودع مشروع آمن. باختصار ، الغرض الرئيسي من أنظمة التحكم في الإصدار هو تسهيل التعامل مع المعلومات المتغيرة. دعنا نحلل النظرة العامة للتنمية بمثال.

افترض أن هناك مشروعًا معينًا تقوم بتطويره ، والعديد من أقسام المبرمجين وأنت المنسق (أو القائد). فيما يتعلق بنظام التحكم ، سواء كان خادمًا (إذا كنا نتحدث عن نظام مركزي) أو جهازًا محليًا ، فإن أي مطور مشروع مقيد فقط بحقوق الوصول لتغيير و / أو قراءة إصدارات الملفات هذا المستودع. في أي وقت ، يمكنك استرجاع البيانات إلى الإصدار الذي تحتاجه. يمكنك ، بصفتك المنسق ، تقييد الوصول إلى مستخدمين معينين لتحديث إصدار الملف. كما يوفر واجهة للمراقبة والبحث عن إصدارات الملفات. على سبيل المثال ، يمكنك إنشاء استعلام: "أين ومتى تغير هذا الجزء من الكود؟".

يفترض النظام تخزينًا آمنًا للبيانات ، أي أي كتلة مخزنة فيه بها العديد من الحيوانات المستنسخة. لذلك ، على سبيل المثال ، في حالة تلف أحد الملفات ، يمكنك استبداله بنسخة في الوقت المناسب. لتقليل حجم بيانات المشروع ، غالبًا ما يتم استخدام ضغط دلتا - نوع من التخزين لا يتم فيه تخزين إصدارات الملف نفسها ، ولكن فقط التغييرات بين المراجعات المتتالية.

4. الاختلافات في أنظمة التحكم في النسخ الموزعة

أنظمة التحكم في الإصدارات الموزعة هي VCS ، النموذج الرئيسي منها هو توطين بيانات كل مطور مشروع. بعبارة أخرى ، إذا كانت جميع الإجراءات في VMS المركزية ، بطريقة أو بأخرى ، تعتمد على الكائن المركزي (الخادم) ، فعندئذٍ في VMS الموزع ، يحتفظ كل مطور بفرع الإصدار الخاص به للمشروع بأكمله. الراحة في مثل هذا النظام هي أن كل مطور لديه الفرصة للعمل بشكل مستقل ، من وقت لآخر لتبادل الإصدارات الوسيطة من الملفات مع المشاركين الآخرين في المشروع. دعنا نفكر في هذه الميزة ، مع متابعة المثال السابق.

كل مطور على الجهاز لديه مستودع محلي خاص به - مكان يتم فيه تخزين إصدارات الملفات. يتم تنفيذ العمل مع بيانات المشروع على المستودع المحلي، ولهذا ليس من الضروري الحفاظ على الاتصال مع بقية فروع التطوير (حتى لو كانت الفروع الرئيسية). التواصل مع المستودعات الأخرى مطلوب فقط عند تغيير / قراءة إصدارات الملفات من الفروع الأخرى. في الوقت نفسه ، يحدد كل مشارك في المشروع حقوق التخزين الخاصة به للقراءة والكتابة. وبالتالي ، فإن جميع الفروع في VCS الموزعة متساوية مع بعضها البعض ، ويتم اختيار الفرع الرئيسي من قبل المنسق. الفرق الوحيد بين الفرع الرئيسي هو أن المطورين سوف يتطلعون إليه عقليًا.

5. الملامح والميزات الرئيسية لبوابة

تجدر الإشارة إلى أن النظام ، إذا لم يحدث دفقة ، فقد أثار قليلاً مجتمع سيارات الدفع الرباعي بحداثة وقدم مسارًا جديدًا للتطور. يوفر Git أدوات مرنة وسهلة الاستخدام للحفاظ على سجل المشروع.

تتمثل إحدى ميزات Git في أن العمل على إصدارات المشروع قد لا يتم بالترتيب الزمني. يمكن تنفيذ التطوير في عدة فروع متوازية ، والتي يمكن دمجها وتقسيمها في أي وقت أثناء التطوير.

Git هو نظام مرن إلى حد ما ، ولا يقتصر نطاقه على التطوير فقط. على سبيل المثال ، قد يستخدمها الصحفيون ومؤلفو الأدبيات التقنية والإداريون وأساتذة الجامعات بشكل جيد في نوع نشاطهم. تتضمن هذه المهام التحكم في إصدار أي وثائق أو تقرير أو واجب منزلي.

دعنا نسلط الضوء على الاختلافات الرئيسية بين Git وأنظمة VMS الموزعة والمركزية الأخرى.

العمارة Git

SHA1 (خوارزمية التجزئة الآمنة 1) هي خوارزمية تجزئة مشفرة. يتكون كل ملف في مشروع Git من اسم ومحتوى. الاسم هو أول 20 بايت من البيانات ، ومن الواضح أنه مكتوب بأربعين حرفًا بالنظام الست عشري. يتم الحصول على هذا المفتاح عن طريق تجزئة محتويات الملف. لذلك ، على سبيل المثال ، من خلال مقارنة اسمين ، يمكننا القول بما يقرب من 100٪ من اليقين أنهما يحتويان على نفس المحتوى. أيضًا ، أسماء الكائنات المتشابهة في الفروع المختلفة (المستودعات) هي نفسها ، مما يسمح لك بالعمل مباشرة على البيانات. إضافة جيدةيتم تقديم ما قيل أعلاه أيضًا من خلال حقيقة أن التجزئة تسمح لك بتحديد الضرر الذي يلحق بالملفات بدقة. على سبيل المثال ، من خلال مقارنة تجزئة المحتوى بالاسم ، يمكننا تحديد ما إذا كانت البيانات تالفة أم لا. علاوة على ذلك ، بالاسم سوف نفهم اسم الملف ، وسوف يطلق على سلسلة الأحرف تجزئة SHA1.

ومن الجدير بالذكر ما يسمى بالاصطدامات. "تحديد الضرر دقيق تمامًا" يعني أن هناك مثل هذه الملفات ، مختلفة في المحتوى ، والتي تكون تجزئة SHA1 هي نفسها. احتمالية حدوث مثل هذه الاصطدامات صغيرة جدًا ، و تقييم أولييساوي 2 أس -80 (~ 10 أس -25). لا يوجد تقدير دقيق ، لأن هذه اللحظةفشل المجتمع العالمي في فك شفرة مخطط التشفير هذا بشكل فعال.

كائنات Git

يمكن مقارنة العمل مع إصدارات الملفات في Git بالعمليات المعتادة في أنظمة الملفاتأوتش. يتكون الهيكل من أربعة أنواع من الكائنات: Blob و Tree و Commit و References ؛ بعضها ، بدوره ، مقسم إلى كائنات فرعية.

Blob (كائن ثنائي كبير) هو نوع بيانات يحتوي فقط على محتويات الملف وتجزئة SHA1 الخاصة به. Blob هي وسيلة التخزين الرئيسية والوحيدة في بنية Git. من الممكن رسم موازٍ بين هذا الكائن و inodes في أنظمة الملفات ، نظرًا لأن هيكلها والغرض منها متشابهان جدًا.

شجرة

  • تجزئة SHA1 الخاصة ؛
  • تجزئة SHA1 للنقط و / أو الأشجار ؛
  • حقوق الوصول لأنظمة Unix ؛
  • الاسم الرمزي للكائن (اسم استخدام محليفي النظام).

الكائن في جوهره مشابه للدليل. يحدد التسلسل الهرمي لملفات المشروع.

يقترف- نوع بيانات يحتوي على:

  • تجزئة SHA1 الخاصة ؛
  • الارتباط بشجرة واحدة بالضبط ؛
  • رابط للالتزام السابق (قد يكون هناك العديد منهم) ؛
  • اسم المؤلف ووقت إنشاء الالتزام ؛
  • اسم الملتزم (الملتزم هو الشخص الذي قام بتطبيق الالتزام على المستودع ، وقد يختلف عن المؤلف) والوقت الذي تم فيه تطبيق الالتزام ؛
  • قطعة عشوائية من البيانات (يمكن استخدام كتلة ل التوقيع الإلكترونيأو ، على سبيل المثال ، لشرح التغييرات في الالتزام).

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

المرجع هو نوع بيانات يحتوي على مرجع لأي من الكائنات الأربعة (Blob و Tree و Commit و References). والغرض الرئيسي منه هو الإشارة بشكل مباشر أو غير مباشر إلى كائن وأن يكون مرادفًا للملف الذي يشير إليه. هذا يزيد من فهم هيكل المشروع. من غير الملائم للغاية العمل بمجموعة لا معنى لها من الأحرف في الاسم ، بينما يمكن تسمية الرابط ، على عكس تجزئة SHA1 ، لأنه أكثر ملاءمة للمطور.

الروابط ، بدورها ، يمكن تقسيمها إلى عدد من الكائنات الفرعية التي لها بعض الاختلافات: الفرع ، العلامة. دعونا نفكر فيها.

الفرع (الرئيسي ، الفرع)- رابط رمزي ، يشير إلى آخر التزام في سجل الالتزام لفرع معين ويخزن تجزئة SHA1 للكائن. هو نوع بيانات أنظمة الملفات المسجلة في دفتر اليومية. هذا النوعلم يتم تعريف الكائن في Git نفسه ، ولكنه موروث من أنظمة التشغيل والملفات. يستخدم الفرع كمرادف للملف الذي يشير إليه ، أي يسمح لك Git بالعمل عليه مباشرة. يمكنك تحمل عدم التفكير فيما إذا كنت تعمل معه احدث اصدارأم لا.

بطاقة شعارهو نوع بيانات يشير دائمًا ، على عكس الفروع ، إلى نفس الكائن من النوع blob أو الشجرة أو الالتزام أو العلامة. ويمكن تقسيمها بدورها إلى خفيفة الوزن (علامة خفيفة) وثقيلة أو مشروحة (علامة مشروحة). لا تختلف علامة الضوء ، باستثناء ثبات الارتباط ، عن الفروع العادية ، أي يحتوي فقط على تجزئة SHA1 للكائن الذي يشير إليه داخل نفسه. تتكون العلامة المشروحة من جزأين:

  • يحتوي الجزء الأول على تجزئة SHA1 الخاصة به ؛
  • الجزء الثاني يتكون من:
    • يشير SHA1 للكائن بواسطة العلامة المشروحة ؛
    • نوع الكائن المحدد (blob أو الشجرة أو الالتزام أو العلامة) ؛
    • الاسم الرمزي للعلامة ؛
    • تاريخ ووقت إنشاء العلامة ؛
    • الاسم والبريد الإلكتروني لمنشئ العلامة ؛
    • جزء تعسفي من البيانات (يمكن استخدام هذه الكتلة للتوقيع الإلكتروني أو لشرح علامة).

بمعنى آخر ، المشروع في Git عبارة عن مجموعة من النقاط التي ترتبط بشبكة من الأشجار. يمكن أن ينعكس الهيكل الهرمي الناتج ، اعتمادًا على الوقت ، في شكل التزامات - إصدارات ، ولفهم هيكلها ، تحتوي Git على كائنات مثل الروابط. باستثناء الإجراءات ذات الارتباطات ، يتم أتمتة جميع الأعمال تقريبًا مع كائنات النظام من الداخل قدر الإمكان. انطلاقًا من آلية الروابط ، نأتي إلى الفكرة التالية - للعمل على مجموعات من الملفات. وفقًا للمؤلف ، فإن الفكرة هي مفتاح فلسفة جيت. بعد تعيين ، على سبيل المثال ، عملية لالتزام معين ، فإنه سيعمل بشكل متكرر على الجزء الخاص به على طول الشجرة التي يشير إليها. كامتداد لطريقة عرض "الإجراء على كل ملف" المشترك ، فإن الابتكار يبسط التنفيذ والنهج من جانب المبرمج في مهام VCS اليومية ، مثل دمج / تقسيم الفروع ، ومرة ​​أخرى أتمتة العملية بشكل متكرر. هذا النهج سهل الفهم ويعمل بسرعة ومرونة في تحقيق أهدافه. يتم تحقيق العديد من هذه الميزات نظرًا لطبيعة النظام الموجهة نحو Unix ؛ من حيث الأجهزة القياسية ، تعتمد Git على الحلول المتوفرة بالفعل في نظام التشغيل.

دعنا نوضح لحظة تخزين البيانات. محتويات الملفات إصدارات مختلفةيأخذ الكثير من الذاكرة في التسلسل الزمني. لذلك ، على سبيل المثال ، في مشروع من عشرين ملفًا من عشرين إصدارًا ، سيزيد حجم الأرشيف 20 مرة (ربما في حدود مائة ميغا بايت) ، ولكن ماذا سيحدث إذا كان عدد كلاهما أكبر بعشرة أضعاف (يبدو أنه ليس كثيرا)؟ سيزداد حجم المساحة المشغولة بمقدار 100 مرة (أي حوالي 1 جيجابايت). في مهام حقيقيةمعدل نمو الذاكرة المشغولة لا يعتمد خطيًا على الوقت. هناك العديد من التحسينات لحل هذه المشكلة:

  • يتم تخزين كل كائن Git كأرشيف عادي (tar.gz) ؛
  • يتم تطبيق ضغط دلتا المتسلسل على التسلسل الهرمي للملف بأكمله.

لنأخذ مثالا.

لديك تاريخ من ثلاث سنوات لمشروعك ، يحتوي على حوالي ألف ملف ومائة نسخة. إذا كنت في مرحلة ما تحتاج إلى الاتصال أكثر من غيرها نسخه اولي، سيتعين على Git أن يقوم بفك ضغط محفوظات الملف بالكامل. من المخيب للآمال أن هذه العملية يمكن أن تستغرق ما يصل إلى الظهر. يقترح Git القيام بما يسمى نقاط التوقف ، أي قم بتخزين ملف مؤرشف أسبوعيًا بعد عدد معين من الإصدارات ، والذي سنسميه عمق الضغط. ثم ، في مثالنا ، يتم تضييق السجل بأكمله إلى عدد محدد مسبقًا من عمليات ضغط دلتا ، وفك ضغطها ، يمكنك إلقاء نظرة على أي إصدار في التسلسل الزمني. لاحظ أن ضغط دلتا هو الأنسب للاستخدام في بعض أنواع الكائنات الأقرب في التسلسل الهرمي ، لذلك يجب فرز المستودع وفقًا للنوع والحجم. يتم تنفيذ هذه السلسلة من العمليات الموضحة في هذه الفقرة بواسطة وظيفة git-repack (و git-gc التي تحتوي عليها).

دمج وتقسيم الفروع

هذا السؤال مضيعة للوقت ومشبع جدًا ، وبالتالي سنقدم مفهومي الدمج والفصل فقط بشكل عام. لنلق نظرة على المثال مرة أخرى.

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

لنفترض أننا تلقينا نتيجتين مكتملتين بالفعل لنفس المهمة ، والتي عملت عليها مجموعتان من المبرمجين. كيف نكون؟ ترى من هو رمز أسرع وأكثر موثوقية؟ إنه سهل للغاية ، لكنه ليس دائمًا الحل الأفضل. قرار جيد- هذا ، مع وجود القليل من الفهم للكود والملفات ، قم بتقسيمها إلى مهام فرعية أو كتل تعليمات برمجية. وعندها فقط للكشف عن الأقوياء و الجوانب الضعيفةهذه القطع. بالطبع ، هذا الخيار مناسب فقط إذا كنت قد توقعت مسبقًا أنك ستتمكن من جمع كل هذه الجسيمات معًا لاحقًا. إن الحالة التي تقوم فيها أنت بنفسك بتطوير الشفرة ، وتحسين بعض الأخطاء وإصلاحها ، تعادل المثال أعلاه. تسمى عملية دمج عددين صحيحين في واحد بالدمج. عملية دمج نسختين هي اللحظة الأساسية لإدارة المشروع. مهما كان الأمر ، يجب عليك تجنب التنفيذ الآلي لهذه العملية. سمة مميزة Git هو الأكثر موثوقية وجميلة الطريق السريعحل مشكلة التفرع.

تشمل مزايا النظام ما يلي:

  1. موجه يونكس.
  2. الاتساق الأيديولوجي (باتباع قواعد استخدام النظام ، من الصعب للغاية الدخول في موقف ميؤوس منه أو الحصول على شيء لم تكن تتوقعه).
  3. الأداء العالي (هذه واحدة من أكثر مزايا النظام وضوحًا ، وسعرها هو "الاتساق الأيديولوجي" و "اتجاه يونكس").
  4. تكامل Git مع VMS تابع لجهة خارجية مثل Subversion ، و Mercurial ، ...
  5. إدارة مجموعة من الملفات (لا يحتاج النظام إلى مراعاة التغييرات في كل ملف على حدة ، فهو يتذكر أي تغييرات في المشروع بأكمله ، وإذا احتجت فجأة إلى تتبع تغييرات فردية ، فسيعرض بالضبط الجزء المرتبط بهذا الملف ).
  6. عملية الدمج (التنفيذ الأكثر تلقائية لمهمة معقدة).

تشمل العيوب ما يلي:

  1. مركزية يونكس (لاحظ عدم وجود تطبيق Git ناضج على أنظمة غير يونكس).
  2. الحاجة إلى تشغيل الأمر git-gc بشكل دوري (يحزم مجموعات من الملفات ويزيل تلك غير المرتبطة).
  3. تجزئة التصادمات (مصادفة تجزئات SHA1 لملفات مختلفة).

6. واجهات بوابة

"كم من الناس ، الكثير من الآراء". دعنا نحاول تحديد عدد من أنواع الواجهة للعمل مع النظام. لأغراض معينة ، يكون كل نوع من أنواع التطبيقات التالية أفضل بطريقته الخاصة.

بالنسبة للأشخاص الذين لا يقومون بالكثير من التطوير ، بالنسبة لـ "المحافظين" - أولئك الذين يحبون "الأزرار ومربعات الاختيار" ويريدون بوعي حماية أنفسهم من الجهد الباهظ لتذكر الوظائف والمفاتيح والعديد من التفاصيل الدقيقة ، فإن خيار نمط TortoiseGit أو Git Extensions هو أكثر ملاءمة - واجهات بسيطة. أنها تسمح لك بالعمل في المقام الأول باستخدام الماوس والعمل في نظام التشغيل Windows المألوف.





بالضبط النوع المعاكس للواجهة. بالنسبة للمبرمجين الذين يحتاجون باستمرار إلى التفاعل مع الموظفين ، لحل المشكلات النموذجية للتحكم في التعليمات البرمجية ، وبالنسبة للأشخاص الذين اعتادوا العمل في أنظمة شبيهة بنظام Unix باستخدام محطة طرفية ، فإن عرض وحدة التحكم للتطبيقات هو الأنسب. إنها سهلة الاستخدام ، وأسرع قليلاً وأكثر فاعلية ، ولكن سيتعين عليها قضاء الوقت في معرفة كيفية استخدامها.



يمكن أيضًا تمييز نوع ثالث من الواجهات - مزيج من النوعين الأولين. أولئك. لديك تطبيق وحدة تحكم ، مثل git shell أصلي. يمكنك استخدام عدد من الأدوات المساعدة الإضافية ، مثل Gitk أو QGit ، لعرض الأشجار ، وتسهيل رؤية التسلسل الهرمي للإصدارات ، والاختلافات بين الإصدارات ، والعثور على العناصر التي تحتاجها.



7. الخاتمة

لذلك ، يتخيل القراء بالفعل كيف يعملون الأنظمة الحديثةالتحكم في الإصدار. بالإضافة إلى ذلك ، قمنا بمراجعة بنية أحد أكثر الأنظمة شيوعًا - Git. في المقالة التالية ، سنحاول التعرف على بعض ميزاته عمليًا - سننظر في الوظائف والمفاتيح الخاصة بها. ستقدم المقالة عددًا من الأمثلة التوضيحية للحفاظ على تاريخ الملفات ، بالإضافة إلى فلسفة الأنظمة الموزعة. سيحاول المؤلف أن يوضح للقراء كيفية استخدام Git بشكل صحيح وسينظر إلى بعضها أخطاء نموذجيةاستخدام هذه السيارة الرياضية متعددة الاستخدامات.

استغرق الأمر مني مؤخرًا تدريس أساسيات Git للعديد من الموظفين الذين يتعلمون البرمجة ويحاولون العمل. عند البحث في الإنترنت عن مقالات للمبتدئين ، صادفت حقيقة أن معظمها يدور حول كيفية استخدام وحدة التحكم Git أو حول ضرورتها ومزاياها على الأنظمة المماثلة الأخرى. عادة لا يكون المبتدئ قويًا جدًا في كل هذه الأمور. أعتقد أنه ، بالنسبة للمبتدئين ، وليس من الضروري معرفة كل هذا. بعد كل شيء ، يمكنك استخدام Git لمشاريعك وتعلم كل سحرها بالتوازي مع تعلم البرمجة. لكن،أوصي بشدة أن تأخذ هذه المقالة كمقال تمهيدي وأن تدرس Git بمزيد من التفاصيل في المستقبل..

بشكل عام ، تحت القطع هو مقال حول كيفية الاستخدام SmartGit و BitBucket يمكن أن تحسن حياتك كمطور مبتدئ.

م خطة صغيرة لما سنفعله:

  1. إنشاء مستودع على Bitbucket.
  2. استنساخ المستودع (إضافته إلى SmartGit).
  3. تشكيل اللجان.
  4. إلغاء التغييرات.
  5. إنشاء الفروع.
  6. دفع الفروع إلى مستودع بعيد (تحميل الفروع إلى خادم بعيد).
  7. دمج الفروع.

يذهب. إنشاء مستودع أمر غاية في الأهمية مهمة بسيطة. سنستخدم BitBucket لهذا الغرض ، لذلك يجب أن يكون لديك حساب هناك. بعد التسجيل ، انقر فوق الزر "إنشاء" واملأ الحقول المطلوبة. استنساخ المستودع باستخدام SmartGit. لنأخذ رابطًا إلى مستودعنا.

ابدأ الآن SmartGit ، حدد "مشروع" - "استنساخ" (أو Ctrl + Alt + O) واملأ الحقول المطلوبة:

سيطلب النظام اسم المستخدم وكلمة المرور من Bitbucket:


في النافذة التالية ، يتوفر خياران للاستنساخ هما "تضمين الوحدات الفرعية" و "إحضار جميع الرؤوس والعلامات". يسمح Git بتخزين وحدات التطبيق الفردية في مستودعات مختلفة. إذا حددت خيار "Include Subsodules" ، فسيقوم SmartGit تلقائيًا بتحميل كافة الوحدات. إذا حددت الخيار "إحضار جميع الرؤوس والعلامات" ، فسيقوم SmartGit بتنزيل جميع الفروع والعلامات لهذا المستودع بعد إنشاء مجلد المشروع:

النافذة التالية هي اسم المشروع في SmartGit:

إذا قمت بالاستنساخ مستودع فارغ(كما في هذا المقال) سترى النافذة التالية:

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

الآن يمكننا أن نرى تغييرات مشروعنا في SmartGit:

حدد كلا الملفين وانقر فوق "المرحلة" أولاً ، ثم "الالتزام". لماذا تحتاج إلى النقر فوق "المرحلة"؟ يضيف زر المرحلة الملفات المحددة إلى الفهرس الحالي. إذا كنت ترغب في إنشاء التزام لملفين ، وقمت بالتغيير ، دعنا نقول ما يصل إلى 5 ، فقط حدد هذين الملفين ، انقر فوق "المرحلة" ، والتي ستضيفهم إلى الفهرس ، وبعد "الالتزام". وبالتالي ، سيتم تضمين الملفين المحددين فقط في التنفيذ.

بعد ذلك ، ستظهر نافذة حيث ستحتاج إلى إدخال تعليق للالتزام. عادة ما يكتبون هناك ما تم تغييره وإضافته وإزالته وما إلى ذلك:

ثم يجب عليك النقر فوق الزر "الالتزام". يقوم الزر "Commit & Push" بالشيء نفسه ، ولكنه يقوم أيضًا بدفع (تحميل) التغييرات إلى المستودع البعيد (في حالتنا ، هو Bitbucket). حتى ذلك الحين ، لا تفعل ذلك. سوف نتعامل مع دفع المزيد. أدناه ، في قائمة الفروع ، سوف تظهر الفرع المحلي"يتقن". هذا هو الفرع الرئيسي لكود التطبيق. ما هي الفروع ، سأقول بعد ذلك بقليل. والآن سنفعل شيئًا ما في مشروعنا ، ثم سنعيد التغييرات. سأحذف ملف readme.txt ، وأعدل ملف index.php وأضيف ملف confic.cfg جديدًا:

الآن دعنا نتراجع عن التغيير بعد الالتزام. دعنا نذهب إلى السجل:

حدد الالتزام الذي نريد التراجع عنه وانقر على "إعادة تعيين":

في النافذة التالية ، يُطلب منا اختيار "إعادة التعيين" التي نريد القيام بها:

سوف يشرح. تذكر أنه عند إنشاء التزام ، فإنك تقوم أولاً بإضافة الملفات إلى الجزء الرئيسي. هذا يسمح لك بربط الملفات المفهرسة فقط. إعادة الضبط الناعم يعيد الالتزام فقط. يبقى الفهرس والتغييرات المادية للملفات. تعمل إعادة الضبط المختلطة بنفس الطريقة التي يعمل بها البرنامج ، ولكنها تزيل أيضًا فهرس الملف. إعادة تعيين القرص الصلب يزيل الالتزامات والفهرس والتغييرات المادية للملفات. استخدم بعناية من الصعب إعادة، حتى لا تزيل الفائض عن طريق الخطأ.

لقد أجريت إعادة ضبط ثابتة من أجل الوضوح:

كما ترى ، اختفت جميع التغييرات في الملفات ، أو بالأحرى ، عاد كل شيء إلى حالة الالتزام الأول.

الآن قليلا عن إنشاء الفروع. لماذا هم مطلوبون على الإطلاق؟ الفرع يسمح لك بالحفظ الوضع الحاليالتعليمات البرمجية والتجربة. على سبيل المثال ، أنت تكتب وحدة جديدة. من المنطقي القيام بذلك في فرع منفصل. يتصل المدير ويقول إن هناك خطأ في المشروع ويحتاج إلى إصلاح عاجل ، ولكن لم تتم إضافة الوحدة الخاصة بك. كيف يتم رفع الملفات غير العاملة؟ ما عليك سوى التبديل إلى فرع العمل بدون الوحدة النمطية وإصلاح الخطأ وتحميل الملفات إلى الخادم. وعندما ينتهي "الخطر" - استمر في العمل على الوحدة. وهذا أحد الأمثلة العديدة لفوائد الفروع.

دعنا نحاول إنشاء فرعنا الخاص. لدينا بالفعل واحد ، هذا سيد. يتم إنشاؤه تلقائيًا (إذا كان مفقودًا) عند إجراء الالتزام الأول. دعونا ننشئ فرعًا آخر ونطلق عليه اسم "new_future1". اضغط على F7 أو انقر بزر الماوس الأيمن في الأسفل في علامة التبويب "الفروع" على النقش "الفروع المحلية" وحدد "إضافة فرع" في القائمة المنسدلة:

انقر فوق "إضافة فرع وتبديل" للتبديل فورًا إلى الفرع الذي تم إنشاؤه. الآن يمكنك إنشاء التزامات جديدة وتعديل الملفات ولا تقلق. نظرًا لأن لديك دائمًا فرع رئيسي يمكنك العودة إليه. عند تبديل أحد الفروع ، يقوم Git بتغيير الملفات المحلية إلى تلك الموجودة في ذلك الفرع. بمعنى ، إذا قمت بإنشاء فرع جديد ، وقم بتغيير شيء ما في ملف index.php ، ثم قم بالتبديل إلى الفرع الرئيسي ، فسيتم حذف جميع التغييرات التي أجريتها. إذا عدت إلى الفرع الذي تم إنشاؤه ، فستعود التغييرات.

حتى الآن نحن نعمل محليا. دعنا نحاول تحميل أعمالنا على الخادم. دعنا ننشئ بعض الالتزام في فرع new_future1. إذا كان المستودع فارغًا ، وكان فارغًا ، نظرًا لأننا أنشأناه منذ بعض الوقت ولم نحمل أي شيء على الخادم ، فإن Bitbucket يعين الفرع الرئيسي الذي تم تحميله أولاً. لذلك ، قم بالتبديل إلى الفرع "الرئيسي" واضغط على زر "الضغط":

بعد ذلك ، سيطلب منك SmartGit تكوين تتبع الفرع. يتيح لك التتبع تحديث الفروع ذات الصلة تلقائيًا عند تنزيل أو تحميل تحديثات الكود. لذلك ، لا تتردد في النقر فوق "تكوين":

انتقل الآن إلى فرع آخر وافعل الشيء نفسه. دعنا نذهب إلى Bitbucket ونرى ما الذي تغير في قسم "الالتزامات":

كما ترى ، وصل كل شيء إلى خادم بعيد.

الآن دعونا ندمج الفروع. لماذا هذا مطلوب؟ لنأخذ نفس المثال مع الوحدة النمطية. عاجلاً أم آجلاً ، ستضيفه وستحتاج إلى إضافة رمز الوحدة النمطية إلى رمز التطبيق الرئيسي. يكفي فقط دمج الفروع. للقيام بذلك ، قم بالتبديل إلى الفرع الذي تريد دمج الرمز فيه. في حالتنا ، هذا هو السيد. ثم انقر بزر الماوس الأيمن على الفرع الذي تريد دمج الكود منه وحدد "دمج":

والآن يبقى دفع تغييرات الفرع الرئيسي إلى الخادم. نقوم بتحميل التغيير إلى الخادم بنفس الطريقة التي فعلناها من قبل ونحصل على:

هذا كل شيء لهذا الوقت. بسبب الصور ، خرج المقال بشكل كبير. أرسل إجاباتك. اكتب أسئلة.

يدور هذا الفصل حول بدء استخدام Git. دعنا نتعلم أولاً أساسيات أنظمة التحكم في الإصدار ، ثم ننتقل إلى كيفية تشغيل Git على نظام التشغيل الخاص بك وأخيراً إعداده للعمل. بنهاية هذا الفصل ، ستعرف ما هو Git ولماذا يجب عليك استخدامه ، وسيكون لديك نظام تم إعداده أخيرًا للعمل.

حول نظام التحكم في الإصدار

ما هو "نظام التحكم في الإصدار" ، ولماذا هو مهم؟ نظام التحكم في الإصدار هو نظام يسجل التغييرات في ملف أو مجموعة ملفات بمرور الوقت ويسمح لك بالعودة إلى إصدار معين لاحقًا. لإصدار ملفات في هذا الكتاب ، سوف نستخدم كمثال مصدرالبرنامج ، على الرغم من أنه يمكنك بالفعل استخدام التحكم في الإصدار لأي نوع من الملفات تقريبًا.

إذا كنت مصمم رسومات أو مصمم ويب وترغب في حفظ كل إصدار من صورة أو تخطيط (على الأرجح ستفعل ذلك) ، فإن نظام التحكم في الإصدار (المشار إليه فيما يلي باسم VCS) هو ما تحتاجه تمامًا. يسمح لك بإعادة الملفات إلى الحالة التي كانت عليها قبل التغييرات ، وإرجاع المشروع إلى الحالة الأولية، شاهد التغييرات ، تعرف على آخر من غيّر شيئًا ما وتسبب في المشكلة ، ومن عيّن المهمة ومتى ، وأكثر من ذلك بكثير. يعني استخدام VCS عمومًا أنه إذا كسرت شيئًا ما أو فقدت الملفات ، فيمكنك إصلاحها بسهولة. بالإضافة إلى كل شيء ، ستحصل على كل هذا دون أي جهد إضافي.

أنظمة التحكم في الإصدار المحلي

يستخدم العديد من الأشخاص نسخ الملفات إلى دليل منفصل كطريقة للتحكم في الإصدار (ربما حتى دليل ذو طابع زمني إذا كانوا أذكياء بدرجة كافية). هذا النهج شائع جدًا نظرًا لبساطته ، ولكنه عرضة للخطأ بشكل لا يصدق. من السهل نسيان الدليل الذي تتواجد فيه وتغيير الملف الخطأ عن طريق الخطأ أو نسخ الملفات الخاطئة.

من أجل حل هذه المشكلة ، قام المبرمجون منذ فترة طويلة بتطوير VCSs المحلية بقاعدة بيانات بسيطة تحتفظ بسجل لجميع التغييرات التي تم إجراؤها على الملفات ، وبالتالي تنفيذ التحكم في المراجعة.

الشكل 1. التحكم في الإصدار المحلي.

يعد نظام RCS أحد أشهر أنظمة التحكم في الكمبيوتر (VCS) ، والذي لا يزال يتم توزيعه مع العديد من أجهزة الكمبيوتر حتى يومنا هذا. حتى الشعبية نظام التشغيليوفر نظام التشغيل Mac OS X الأمر rcs بعد تثبيت أدوات المطور. يقوم نظام التحكم عن بعد (RCS) بتخزين مجموعات من التصحيحات (الاختلافات بين الملفات) على القرص بتنسيق خاص ، حيث يمكنه إعادة إنشاء حالة كل ملف في وقت معين.

أنظمة التحكم المركزية في الإصدار

المشكلة الرئيسية التالية التي يواجهها الناس هي الحاجة إلى التفاعل مع المطورين الآخرين. من أجل التعامل معها ، تم تطوير أنظمة التحكم في الإصدار المركزي (TSKV). تحتوي أنظمة مثل: CVS و Subversion و Perforce على خادم واحد يحتوي على جميع إصدارات الملفات وعدد من العملاء الذين يجلبون الملفات من هذا المستودع المركزي. كان استخدام CSCR هو المعيار لسنوات عديدة.


الشكل 2. التحكم في الإصدار المركزي.

هذا النهج له العديد من المزايا ، لا سيما على SLE المحلي. على سبيل المثال ، يعرف جميع مطوري المشاريع إلى حد ما ما يفعله كل منهم. يتمتع المسؤولون بالسيطرة الكاملة على من يمكنه فعل ماذا ، ومن الأسهل بكثير إدارة CSCM من تشغيل قواعد البيانات المحلية على كل عميل.

على الرغم من هذا ، فإن هذا النهج له أيضًا عيوب خطيرة. العيب الأكثر وضوحًا هو نقطة الفشل الوحيدة التي يمثلها الخادم المركزي. إذا تعطل هذا الخادم لمدة ساعة ، فلن يتمكن أحد خلال ذلك الوقت من استخدام التحكم في الإصدار لحفظ التغييرات التي يعمل عليها ، ولن يتمكن أي شخص من مشاركة هذه التغييرات مع مطورين آخرين. لو HDD، حيث يتم تخزين قاعدة البيانات المركزية ، تالفة ، ولا توجد نسخ احتياطية في الوقت المناسب ، ستفقد كل شيء - التاريخ الكامل للمشروع ، دون احتساب لقطات المستودع الفردية التي تم حفظها على الأجهزة المحلية للمطورين. تعاني VCS المحلية من نفس المشكلة - عندما يتم تخزين كل محفوظات المشروع في مكان واحد ، فإنك تخاطر بفقدان كل شيء.

أنظمة التحكم في الإصدار اللامركزية

هذا هو المكان الذي تلعب فيه أنظمة التحكم في الإصدار اللامركزية (DSVs). في DLCS (مثل Git أو Mercurial أو Bazaar أو Darcs) ، لا يقوم العملاء فقط بتنزيل لقطة من جميع الملفات (حالة الملفات في وقت معين): إنهم ينسخون المستودع بأكمله. في هذه الحالة ، إذا مات أحد الخوادم التي تواصل المطورون من خلالها ، فيمكن نسخ أي مستودع عميل إلى خادم آخر لمواصلة العمل. كل نسخة من المستودع هي نسخة احتياطية كاملة لجميع البيانات.

الشكل 3. التحكم في الإصدار اللامركزي.

علاوة على ذلك ، يمكن للعديد من ملفات CSV التفاعل مع مستودعات بعيدة متعددة في نفس الوقت ، بحيث يمكنك العمل مع مجموعات مختلفة من الأشخاص باستخدام أساليب مختلفة في نفس الوقت ، وضمن نفس المشروع. يتيح لك ذلك تطبيق العديد من أساليب التطوير في وقت واحد ، على سبيل المثال ، النماذج الهرمية ، وهو أمر مستحيل تمامًا في الأنظمة المركزية.

هل تريد العمل في مشاريع فريق تطوير تكنولوجيا المعلومات في نصف الوقت؟ شارك في دورة التأليف الجديدة الخاصة بنا وتعلم كيفية الاستفادة الكاملة من Git!

Git هو نظام تحكم في الإصدار الموزع (VCS). إنه عالمي ومجاني و أداة يدويةل العمل بروح الفريق الواحدالمبرمجين على مشاريع من أي مستوى. يسمح Git للعديد من المطورين بالعمل على مهامهم الفرعية في نفس الوقت ، وإنشاء فروع متساوية. في الوقت نفسه ، لا يؤدي كل حفظ (التزام) في Git إلى استبدال الحفظ السابق ، وفي أي وقت يمكنك العودة إلى الإصدار الأصلي من التعليمات البرمجية.

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

ستكون الدورة مفيدة ليس فقط للمبتدئين ، ولكن أيضًا للمطورين ذوي الخبرة الذين يرغبون في سد الثغرات في مهاراتهم في استخدام Git. يتم تطبيقه بطبيعته ويهدف إلى حل المشكلات والقضايا المحددة التي يواجهها المطورون.

ستتعرف على أنظمة التحكم في الإصدار وكيف يتتبع Git تغييرات التعليمات البرمجية. تعرف على كيفية تثبيت النظام وتكوينه. ستتمكن من إنشاء الفروع ودمجها وحل التعارضات في الكود. قم بممارسة العمل الموزع وإتقان مجموعة أدوات Git.

خذ هذه الدورة التدريبية الفريدة وستكون أي من مشاريع فريق تطوير تكنولوجيا المعلومات الخاصة بك فعالة!



أخبر الأصدقاء