جيت
جيت ( / ɡɪt /ⓘ [ 8 ] هونظام برمجيموزع للتحكم في الإصدارات [ 9 ] قادر علىإدارة إصداراتشفرة المصدر أو البيانات. يُستخدم غالبًا للتحكم فيشفرة المصدرمن قِبلالمبرمجينالذينيطورونالبرامجبشكل تعاوني. وقد أنشأهلينوس تورفالدزللتحكم في الإصدارات أثناء تطويرنواة لينكس. [ 10 ]
تشمل أهداف تصميم Git السرعة، وسلامة البيانات ، ودعم سير العمل الموزع وغير الخطي - أي آلاف الفروع المتوازية التي تعمل على أجهزة كمبيوتر مختلفة. [ 11 ] [ 12 ] [ 13 ]
كما هو الحال مع معظم أنظمة التحكم في الإصدارات الموزعة الأخرى، وعلى عكس معظم أنظمة العميل والخادم ، يحتفظ Git بنسخة محلية من المستودع بأكمله ، والمعروف أيضًا باسم "المستودع"، مع سجل التغييرات وإمكانية تتبع الإصدارات، بشكل مستقل عن الوصول إلى الشبكة أو خادم مركزي . يُخزَّن المستودع على كل جهاز كمبيوتر في دليل قياسي مع ملفات إضافية مخفية لتوفير إمكانيات التحكم في الإصدارات. [ 14 ] يوفر Git ميزات لمزامنة التغييرات بين المستودعات التي تتشارك سجل التغييرات؛ وللتعاون غير المتزامن، يمتد هذا ليشمل المستودعات الموجودة على أجهزة بعيدة. على الرغم من أن جميع المستودعات (ذات سجل التغييرات نفسه) هي نظيرة، غالبًا ما يستخدم المطورون خادمًا مركزيًا لاستضافة مستودع يحتوي على نسخة متكاملة.
يُعدّ Git اليوم نظام التحكم في الإصدارات الأكثر شيوعًا بين مطوري البرمجيات. وهو نظام التحكم في الإصدارات الموزع الأكثر انتشارًا، [ 15 ] [ 16 ] حيث أفاد ما يقرب من 95% من المطورين بأنه نظام التحكم في الإصدارات الرئيسي لديهم اعتبارًا من عام 2022. [ 17 ] كما أنه أداة إدارة شفرة المصدر الأكثر استخدامًا بين المطورين المحترفين. وتُقدّم العديد من منصات تطوير البرمجيات خدمات مستودعات Git، بما في ذلك GitHub و SourceForge و Bitbucket و GitLab . [ 18 ] [ 19 ] [ 20 ] [ 21 ] [ 22 ]
Git هو برنامج مجاني ومفتوح المصدر يتم مشاركته بموجب ترخيص GPL-2.0 فقط .
تم تسجيل العلامة التجارية "Git" من قبل مؤسسة الحفاظ على حرية البرمجيات .
تاريخ
بدأ تورفالدز بتطوير Git في أبريل 2005 بعد إلغاء الترخيص المجاني لنظام BitKeeper ، وهو نظام إدارة التحكم في المصادر (SCM) الاحتكاري المستخدم في تطوير نواة لينكس منذ عام 2002. [ 23 ] [ 24 ] ادعى لاري مكفوي ، صاحب حقوق الطبع والنشر لـ BitKeeper ، أن أندرو تريدجيل قد أنشأ SourcePuller عن طريق الهندسة العكسية لبروتوكولات BitKeeper . [ 25 ] كما حفزت هذه الحادثة نفسها إنشاء Mercurial ، وهو نظام آخر للتحكم في الإصدارات.
أراد تورفالدز نظامًا موزعًا يُشبه BitKeeper، لكن لم يُلبِّ أيٌّ من الأنظمة المجانية المتاحة احتياجاته. وأشار إلى مثالٍ لنظام إدارة التحكم في المصادر الذي يحتاج إلى 30 ثانية لتطبيق رقعة وتحديث جميع البيانات الوصفية المرتبطة بها، ولاحظ أن هذا لا يتناسب مع احتياجات تطوير نواة لينكس، حيث قد تتطلب المزامنة مع زملائه من القائمين على الصيانة 250 إجراءً من هذا القبيل في آنٍ واحد. وحدد معيار تصميمه ألا تستغرق عملية الترقيع أكثر من ثلاث ثوانٍ، وأضاف ثلاثة أهداف أخرى: [ 11 ]
- خذ نظام الإصدارات المتزامنة (CVS) كمثال على ما لا يجب فعله؛ إذا كنت في شك، فاتخذ القرار المعاكس تمامًا. [ 13 ]
- دعم سير عمل موزع يشبه BitKeeper. [ 13 ]
- يجب تضمين ضمانات قوية للغاية ضد الفساد، سواء كان عرضيًا أو متعمدًا. [ 12 ]
أدت هذه المعايير إلى استبعاد جميع أنظمة التحكم في الإصدارات المستخدمة في ذلك الوقت، لذلك شرع تورفالدز في كتابة نظامه الخاص مباشرة بعد إصدار نواة لينكس التطويرية 2.6.12-rc2. [ 13 ]
بدأ تطوير Git في 3 أبريل 2005. [ 26 ] أعلن تورفالدز عن المشروع في 6 أبريل، وأصبح النظام مُستضافًا ذاتيًا في اليوم التالي. [ 26 ] [ 27 ] جرى أول دمج لعدة فروع في 18 أبريل. [ 28 ] حقق تورفالدز أهدافه المتعلقة بالأداء؛ ففي 29 أبريل، تم اختبار أداء Git الناشئ بتسجيل تصحيحات لشجرة نواة لينكس بمعدل 6.7 تصحيحات في الثانية. [ 29 ] في 16 يونيو، تمكن Git من إصدار نواة لينكس 2.6.12. [ 30 ]
سلّم تورفالدز مهام الصيانة في 26 يوليو 2005 إلى جونيو هامانو، أحد المساهمين الرئيسيين في المشروع. [ 31 ] وكان هامانو مسؤولاً عن إصدار النسخة 1.0 في 21 ديسمبر 2005. [ 32 ]
تسمية
علّق تورفالدز ساخرًا على اسم "جيت" (وهو مصطلح عامي بريطاني يُطلق على الشخص غير اللطيف أو السخيف): "أنا شخص أناني، وأُسمّي جميع مشاريعي باسمي. أولًا " لينكس "، والآن "جيت". [ 33 ] [ 34 ] وتصف صفحة الدليل " جيت" بأنه "متتبع المحتوى الغبي". [ 35 ]
ويشرح ملف التعليمات البرمجية المصدرية ذلك بمزيد من التفصيل : [ 36 ]
كلمة "git" يمكن أن تعني أي شيء، حسب مزاجك.
- عبارة عشوائية من ثلاثة أحرف قابلة للنطق، ولا تُستخدم فعليًا في أي أمر شائع في أنظمة يونكس. قد يكون لكونها نطقًا خاطئًا لكلمة "get" أهمية أو لا.
- غبي. حقير ومثير للاشمئزاز. بكل بساطة. اختر ما يناسبك من قاموس العامية.
- "متتبع المعلومات العالمي": أنت في مزاج جيد، وهو يعمل لصالحك بالفعل. تغني الملائكة، ويملأ النور الغرفة فجأة.
- "يا إلهي، شاحنة مليئة بالهراء الغبي": عندما تتعطل.
يشير الكود المصدري لبرنامج Git إلى البرنامج باسم "مدير المعلومات الجهنمي". [ 37 ] [ 38 ]
صفات
تصميم
يُمثل تصميم Git مزيجًا من خبرة تورفالدز في نظام لينكس في إدارة مشروع تطوير موزّع ضخم، إلى جانب معرفته العميقة بأداء نظام الملفات التي اكتسبها من المشروع نفسه، والحاجة المُلحة لإنتاج نظام عامل في وقت قصير. وقد أدت هذه العوامل إلى خيارات التنفيذ التالية: [ 10 ]
- دعم قوي للتطوير غير الخطي
- يدعم Git التفرع والدمج السريع، ويتضمن أدوات خاصة لتصور وتتبع تاريخ التطوير غير الخطي. في Git، يُفترض أساسًا أن التغيير يُدمج بوتيرة أسرع من كتابته، حيث يُمرر إلى مختلف المراجعين. في Git، الفروع بسيطة للغاية: الفرع هو مجرد مرجع إلى عملية تثبيت واحدة.
- التطوير الموزع
- على غرار أنظمة إدارة المستودعات مثل داركس ، وبيت كيبر ، وميركوريال ، وبازار ، ومونوتون ، يمنح جيت كل مطور نسخة محلية من سجل التطوير الكامل، وتُنسخ التغييرات من مستودع إلى آخر. تُستورد هذه التغييرات كفروع تطوير إضافية، ويمكن دمجها بنفس طريقة دمج فرع مُطوَّر محليًا. [ 39 ]
- التوافق مع الأنظمة والبروتوكولات الحالية
- يمكن نشر المستودعات عبر بروتوكول نقل النص التشعبي الآمن (HTTPS)، أو بروتوكول نقل النص التشعبي (HTTP)، أو بروتوكول نقل الملفات (FTP)، أو بروتوكول Git عبر مقبس عادي أو بروتوكول SSH. يحتوي Git أيضًا على محاكاة لخادم CVS، مما يتيح استخدام عملاء CVS الحاليين ومكونات IDE الإضافية للوصول إلى مستودعات Git. ويمكن استخدام مستودعات Subversion مباشرةً مع git-svn. [ 40 ]
- إدارة المشاريع الكبيرة بكفاءة
- وصف تورفالدز نظام Git بأنه سريع للغاية وقابل للتوسع، [ 41 ] وأظهرت اختبارات الأداء التي أجرتها موزيلا [ 42 ] أنه أسرع بعشر مرات في مقارنة المستودعات الكبيرة من Mercurial و GNU Bazaar ؛ ويمكن أن يكون جلب سجل الإصدارات من مستودع مخزن محليًا أسرع بمئة مرة من جلبه من الخادم البعيد. [ 43 ]
- التوثيق التشفيري للتاريخ
- يُخزَّن سجل Git بطريقةٍ يعتمد فيها مُعرِّف إصدارٍ مُعيَّن ( يُسمى " التزامًا" في Git) على سجل التطوير الكامل الذي سبق ذلك الالتزام. وبمجرد نشره، لا يُمكن تغيير الإصدارات القديمة دون أن يُلاحَظ ذلك. يُشبه هيكله شجرة Merkle ، ولكن مع إضافة بيانات عند العُقد والأوراق. [ 44 ] ( تتمتع Mercurial و Monotone أيضًا بهذه الخاصية).
- التصميم القائم على الأدوات
- صُمم Git كمجموعة من البرامج المكتوبة بلغة C ، بالإضافة إلى العديد من نصوص shell البرمجية التي توفر أغلفة لتلك البرامج. [ 45 ] على الرغم من إعادة كتابة معظم تلك النصوص بلغة C لتحسين السرعة وسهولة النقل، إلا أن التصميم لا يزال قائماً، ومن السهل ربط المكونات معاً. [ 46 ]
- استراتيجيات دمج قابلة للتوصيل
- كجزء من تصميم مجموعة أدواته، يمتلك Git نموذجًا محددًا جيدًا لعملية الدمج غير المكتملة، ولديه خوارزميات متعددة لإكمالها، وتنتهي بإبلاغ المستخدم بأنه غير قادر على إكمال عملية الدمج تلقائيًا وأن التحرير اليدوي مطلوب. [ 47 ]
- تتراكم القمامة حتى يتم جمعها
- سيؤدي إيقاف العمليات أو التراجع عن التغييرات إلى ترك كائنات معلقة غير ضرورية في قاعدة البيانات. وعادةً ما تمثل هذه الكائنات جزءًا صغيرًا من سجل الكائنات المطلوبة المتنامي باستمرار. يقوم Git تلقائيًا بجمع البيانات المهملة عند إنشاء عدد كافٍ من الكائنات غير المُجمّعة في المستودع. ويمكن استدعاء عملية جمع البيانات المهملة بشكل صريح باستخدام [ 48 ] [ 49 ]
git gc. - تعبئة الكائنات الصريحة الدورية
- يخزن Git كل كائن مُنشأ حديثًا كملف منفصل. ورغم ضغطه بشكل فردي، إلا أن هذا يستهلك مساحة كبيرة ويُعدّ غير فعال. ولحل هذه المشكلة، يُستخدم نظام الحزم الذي يخزن عددًا كبيرًا من الكائنات المضغوطة جزئيًا فيما بينها في ملف واحد (أو دفق بايتات شبكي) يُسمى ملف الحزمة . تُضغط الحزم باستخدام قاعدة تقريبية مفادها أن الملفات التي تحمل الاسم نفسه غالبًا ما تكون متشابهة، دون الاعتماد على ذلك لضمان صحة البيانات. يُنشأ ملف فهرس مُقابل لكل ملف حزمة، يُسجل فيه موضع كل كائن داخل ملف الحزمة. لا تزال الكائنات المُنشأة حديثًا (مع إضافة سجل جديد) تُخزن ككائنات منفردة، ويلزم إعادة تجميعها دوريًا للحفاظ على كفاءة استخدام المساحة. قد تكون عملية تجميع المستودع مُكلفة حسابيًا. من خلال السماح بوجود الكائنات في المستودع بتنسيق غير مُحكم ولكنه سريع الإنشاء، يُتيح Git تأجيل عملية التجميع المُكلفة إلى وقت لاحق، عندما يكون الوقت أقل أهمية، مثل نهاية يوم العمل. يُجري Git إعادة التجميع الدورية تلقائيًا، ولكن يُمكن أيضًا إعادة التجميع يدويًا باستخدام
git gcالأمر. [ 50 ] لضمان سلامة البيانات، يحتوي كل من ملف الحزمة وفهرسه على مجموع اختباري SHA-1 [ 51 ] ، كما يحتوي اسم ملف الحزمة أيضًا على مجموع اختباري SHA-1. للتحقق من سلامة المستودع، شغّل الأمرgit fsck. [ 52 ] [ 53 ]
من خصائص Git الأخرى أنه يلتقط صورًا لشجرة الدليل للملفات. عملت الأنظمة الأولى لتتبع إصدارات شفرة المصدر، مثل نظام التحكم في شفرة المصدر (SCCS) ونظام التحكم في المراجعات (RCS)، على الملفات الفردية، مع التركيز على توفير المساحة الذي يمكن تحقيقه من خلال دمج التغييرات (SCCS) أو ترميز التغييرات (RCS) للإصدارات (المتشابهة في الغالب). حافظت أنظمة التحكم في المراجعات اللاحقة على مفهوم امتلاك الملف هويةً عبر مراجعات متعددة للمشروع. مع ذلك، رفض تورفالدز هذا المفهوم. [ 54 ] ونتيجةً لذلك، لا يسجل Git صراحةً علاقات مراجعة الملفات على أي مستوى أدنى من شجرة شفرة المصدر.
السلبيات
لهذه العلاقات الضمنية في المراجعة بعض العواقب الهامة:
- يُعدّ فحص سجل التغييرات لملف واحد أكثر تكلفةً بقليل من فحص سجل التغييرات للمشروع بأكمله. [ 55 ] للحصول على سجل التغييرات التي تؤثر على ملف معين، يجب على Git استعراض السجل العام ثم تحديد ما إذا كان كل تغيير قد عدّل ذلك الملف. مع ذلك، تُمكّن هذه الطريقة Git من إنتاج سجل واحد بكفاءة متساوية يُظهر التغييرات التي طرأت على أي مجموعة من الملفات. على سبيل المثال، يُعدّ مجلد فرعي من شجرة المصدر بالإضافة إلى ملف رأس عام مرتبط به حالة شائعة جدًا.
- تُعالج عمليات إعادة التسمية ضمنيًا لا صراحةً. من الشكاوى الشائعة حول نظام CVS أنه يستخدم اسم الملف لتحديد سجل مراجعاته، لذا لا يمكن نقل ملف أو إعادة تسميته دون مقاطعة سجله أو إعادة تسمية السجل، مما يجعله غير دقيق. تحل معظم أنظمة التحكم في المراجعات اللاحقة لنظام CVS هذه المشكلة بإعطاء الملف اسمًا فريدًا طويل الأمد (مشابهًا لرقم inode ) يبقى بعد إعادة التسمية. لا يسجل Git مثل هذا المعرف، ويُعتبر هذا ميزة. [ 56 ] [ 57 ] تُقسم ملفات شفرة المصدر أحيانًا أو تُدمج، أو يُعاد تسميتها ببساطة، [ 58 ] وتسجيل ذلك كإعادة تسمية بسيطة سيؤدي إلى تجميد وصف غير دقيق لما حدث في السجل (غير القابل للتغيير). يعالج Git هذه المشكلة من خلال اكتشاف عمليات إعادة التسمية أثناء تصفح سجل اللقطات بدلًا من تسجيلها عند إنشاء اللقطة. [ 59 ] (باختصار، عند وجود ملف في المراجعة N ، يُعتبر الملف الذي يحمل نفس الاسم في المراجعة N - 1 هو سلفه الافتراضي. ولكن، في حال عدم وجود ملف يحمل نفس الاسم في المراجعة N - 1، يبحث Git عن ملف كان موجودًا فقط في المراجعة N - 1 ويشبه الملف الجديد إلى حد كبير.) مع ذلك، يتطلب هذا الأمر جهدًا أكبر من وحدة المعالجة المركزية في كل مرة تتم فيها مراجعة سجل التغييرات، وتتوفر عدة خيارات لتعديل هذه الآلية. لا تعمل هذه الآلية دائمًا؛ ففي بعض الأحيان، يُقرأ تغيير اسم ملف مع إجراء تغييرات في نفس الالتزام على أنه حذف للملف القديم وإنشاء ملف جديد. يمكن للمطورين تجاوز هذا القيد عن طريق الالتزام بتغيير الاسم والتغييرات بشكل منفصل.
استراتيجيات الدمج
يطبق Git العديد من استراتيجيات الدمج؛ ويمكن اختيار استراتيجية غير افتراضية في وقت الدمج: [ 60 ]
- حل : خوارزمية الدمج الثلاثي التقليدية .
- التكراري : هذا هو الوضع الافتراضي عند سحب أو دمج فرع واحد، وهو شكل مختلف من خوارزمية الدمج الثلاثي.
عند وجود أكثر من سلف مشترك يمكن استخدامه في عملية دمج ثلاثية، يتم إنشاء شجرة مدمجة من هذه الأسلاف المشتركة، وتُستخدم هذه الشجرة كشجرة مرجعية لعملية الدمج الثلاثي. وقد أظهرت الاختبارات التي أُجريت على عمليات دمج سابقة مأخوذة من تاريخ تطوير نواة لينكس 2.6 أن هذه الطريقة تُقلل من تعارضات الدمج دون التسبب في عمليات دمج خاطئة. كما أنها قادرة على اكتشاف عمليات الدمج التي تتضمن إعادة تسمية الملفات ومعالجتها.
— لينوس تورفالدز [ 61 ]
- الأخطبوط : هذا هو الوضع الافتراضي عند دمج أكثر من رأسين.
هياكل البيانات
لا تُعتبر عناصر Git الأساسية نظامًا لإدارة شفرة المصدر بطبيعتها . يوضح تورفالدز ذلك قائلاً: [ 62 ]
من نواحٍ عديدة، يمكنك اعتبار git مجرد نظام ملفات - فهو قابل للعنونة بالمحتوى ، ولديه مفهوم التحكم في الإصدارات، لكنني صممته حقًا من وجهة نظر شخص متخصص في أنظمة الملفات (أنا أعمل في مجال أنظمة النواة)، وليس لدي أي اهتمام على الإطلاق بإنشاء نظام إدارة إصدارات تقليدي.
انطلاقاً من نهج التصميم الأولي هذا، طورت Git المجموعة الكاملة من الميزات المتوقعة من نظام إدارة تكوين البرمجيات التقليدي، [ 63 ] حيث يتم إنشاء الميزات في الغالب حسب الحاجة، ثم يتم تحسينها وتوسيعها بمرور الوقت.

يحتوي Git على بنيتين للبيانات : فهرس قابل للتغيير (يسمى أيضًا المرحلة أو ذاكرة التخزين المؤقت ) يقوم بتخزين معلومات حول دليل العمل والمراجعة التالية المراد الالتزام بها؛ وقاعدة بيانات كائنات تخزن كائنات غير قابلة للتغيير. [ 64 ]
يعمل الفهرس كنقطة اتصال بين قاعدة بيانات الكائنات وشجرة العمل. [ 64 ]
يحتوي مخزن الكائنات على خمسة أنواع من الكائنات: [ 65 ] [ 52 ]
- الكتلة الثنائية الكبيرة (Blob) هي محتوى ملف . لا تحتوي الكتل الثنائية الكبيرة على اسم ملف محدد، أو طوابع زمنية، أو بيانات وصفية أخرى (اسم الكتلة الثنائية الكبيرة داخليًا هو تجزئة لمحتواها). في Git، كل كتلة ثنائية كبيرة هي نسخة من ملف، تحتوي على بيانات الملف. [ 66 ]
- كائن الشجرة يُعادل الدليل. يحتوي على قائمة بأسماء الملفات، [ 67 ] لكل منها بعض بتات النوع ومرجع إلى كائن ثنائي كبير أو كائن شجرة يُمثل ذلك الملف أو الرابط الرمزي أو محتويات الدليل. تُمثل هذه الكائنات لقطة من شجرة المصدر. (بشكل عام، يُشكل هذا شجرة ميركل ، مما يعني أن تجزئة واحدة فقط للشجرة الجذرية كافية وتُستخدم فعليًا في عمليات الالتزام لتحديد الحالة الدقيقة لهياكل الشجرة الكاملة لأي عدد من الأدلة الفرعية والملفات).
- يربط كائن الالتزام كائنات الشجرة معًا في سجل التغييرات. ويحتوي على اسم كائن الشجرة (في دليل المصدر ذي المستوى الأعلى)، والطابع الزمني، ورسالة السجل، وأسماء صفر أو أكثر من كائنات الالتزام الأصلية. [ 68 ]
- كائن الوسم هو حاوية تحتوي على مرجع لكائن آخر، ويمكنه استيعاب بيانات وصفية إضافية متعلقة بهذا الكائن. ويُستخدم عادةً لتخزين التوقيع الرقمي لكائن الالتزام الذي يتوافق مع إصدار معين من البيانات التي يتتبعها نظام Git. [ 69 ]
- يقوم كائن ملف الحزمة بتجميع العديد من الكائنات الأخرى في حزمة مضغوطة باستخدام zlib لتحقيق الصغر وسهولة النقل عبر بروتوكولات الشبكة. [ 70 ]
يُعرَّف كل عنصر بواسطة تجزئة SHA-1 لمحتوياته. يحسب Git التجزئة ويستخدم هذه القيمة لاسم العنصر. يُوضع العنصر في دليل يتطابق مع أول حرفين من تجزئته. أما باقي التجزئة فيُستخدم كاسم ملف لهذا العنصر.
يخزن Git كل نسخة من الملف ككائن ثنائي كبير (blob) فريد. ويمكن معرفة العلاقات بين هذه الكائنات من خلال فحص شجرة التغييرات (tree) وكائنات الالتزام (commit). تُخزن الكائنات المضافة حديثًا بكاملها باستخدام ضغط zlib. قد يستهلك هذا الضغط مساحة كبيرة من القرص بسرعة، لذا يمكن تجميع الكائنات في حزم (packs ) تستخدم ضغط دلتا (delta compression) لتوفير المساحة، حيث تُخزن الكائنات الثنائية الكبيرة (blobs) كتغييراتها بالنسبة إلى الكائنات الثنائية الكبيرة الأخرى.
بالإضافة إلى ذلك، يخزن Git تصنيفات تُسمى refs (اختصارًا لكلمة references) للإشارة إلى مواقع عمليات الالتزام المختلفة. يتم تخزينها في قاعدة بيانات المراجع، وهي على التوالي: [ 71 ]
- الرؤوس (الفروع) : مراجع مسماة يتم نقلها تلقائيًا إلى الالتزام الجديد عند إجراء التزام فوقها.
- الرأس : رأس محجوز تتم مقارنته بشجرة العمل لإنشاء عملية تثبيت.
- الوسوم : تشبه مراجع الفروع، ولكنها مرتبطة بعملية تثبيت معينة. تُستخدم لتمييز النقاط المهمة في التاريخ.
الأوامر
تتضمن الأوامر المستخدمة بشكل متكرر لواجهة سطر الأوامر الخاصة بـ Git ما يلي : [ 72 ] [ 73 ]
git init، والذي يُستخدم لإنشاء مستودع git.git clone [URL]، الذي يستنسخ أو يكرر مستودع git من عنوان URL خارجي.git add [file]، والذي يضيف ملفًا إلى دليل عمل git (الملفات التي ستتم إضافتها إلى الالتزام).git commit -m [commit message]، والذي يقوم بتثبيت الملفات من دليل العمل الحالي (وبذلك تصبح الآن جزءًا من تاريخ المستودع).
يمكن إنشاء ملف .gitignore في مستودع Git كملف نصي عادي. لن يتتبع Git الملفات المدرجة في ملف .gitignore . [ 74 ] : 3-4. يمكن استخدام هذه الميزة لتجاهل الملفات التي تحتوي على مفاتيح أو كلمات مرور، والملفات الزائدة، والملفات الكبيرة (التي سيرفض GitHub تحميلها). [ 75 ]
مراجع Git
يمكن حذف أي عنصر في قاعدة بيانات Git غير مُشار إليه باستخدام أمر جمع البيانات المهملة أو تلقائيًا. قد يُشار إلى عنصر بواسطة عنصر آخر أو مرجع صريح. يحتوي Git على أنواع مختلفة من المراجع. تختلف أوامر إنشاء المراجع ونقلها وحذفها. git show-refيعرض الأمر `git require` جميع المراجع. من أنواعها:
التطبيقات

تم تطوير Git (التنفيذ الرئيسي بلغة C) بشكل أساسي على نظام Linux ، على الرغم من أنه يدعم أيضًا معظم أنظمة التشغيل الرئيسية، بما في ذلك أنظمة BSD ( DragonFly BSD و FreeBSD و NetBSD و OpenBSD ) و Solaris و macOS و Windows . [ 77 ] [ 78 ]
كانت النسخة الأولى من Git لنظام ويندوز في الأساس إطار عمل لمحاكاة نظام لينكس، حيث تستضيف نسخة لينكس. عند تثبيت Git على ويندوز، يتم إنشاء مجلد "ملفات البرامج" الذي يحمل اسمًا مشابهًا، ويحتوي على نسخة Mingw-w64 من مجموعة مُترجمات GNU ، ولغة Perl 5، وMSYS2 (وهي نسخة مُعدّلة من Cygwin ، بيئة محاكاة شبيهة بنظام يونكس لنظام ويندوز)، بالإضافة إلى العديد من نسخ ويندوز أو محاكيات أدوات ومكتبات لينكس. حاليًا، تُوزّع نسخ Git الأصلية لنظام ويندوز على شكل مُثبّتات 32 بت و64 بت. [ 79 ] ويُوفّر موقع Git الرسمي حاليًا نسخة من Git لنظام ويندوز، لا تزال تستخدم بيئة MSYS2. [ 80 ]
تُعدّ JGit مكتبة برمجية مكتوبة بلغة جافا خالصة ، مصممة لتُدمج في أي تطبيق جافا. تُستخدم JGit في أداة Gerrit لمراجعة التعليمات البرمجية، وفي EGit، وهو عميل Git لبيئة التطوير المتكاملة Eclipse . [ 81 ]
Go-git هو تطبيق مفتوح المصدر لـ Git مكتوب بلغة Go خالصة . [ 82 ] يُستخدم حاليًا لدعم المشاريع كواجهة SQL لمستودعات أكواد Git [ 83 ] وتوفير التشفير لـ Git. [ 84 ]
دولويتش هو تطبيق لـ Git مكتوب بلغة بايثون خالصة مع دعم CPython 3.6 والإصدارات الأحدث و Pypy. [ 85 ]
تُعدّ مكتبة libgit2، وهي تطبيق Git، مكتبة برمجية مكتوبة بلغة ANSI C، ولا تعتمد على أي مكتبات أخرى، ويمكن بناؤها على منصات متعددة، بما في ذلك Windows وLinux وmacOS وBSD. [ 86 ] كما أنها تدعم العديد من لغات البرمجة، مثل Ruby وPython و Haskell . [ 87 ] [ 88 ] [ 89 ]
تتضمن تطبيقات Git الأخرى JS-Git ( تطبيق جافا سكريبت لمجموعة فرعية من Git)، [ 90 ] وGame of Trees (تطبيق مفتوح المصدر لـ Git لمشروع OpenBSD )، [ 91 ] وgit9 (تطبيق مستقل لـ Git لنظام Plan 9 باستخدام تجريدات النظام الأصلية)، [ 92 ] [ 93 ] وgitoxide (تطبيق لـ Git مكتوب بلغة Rust خالصة ). [ 94 ]
خادم جيت

بما أن Git نظام تحكم في الإصدارات موزع، فإنه يُمكن استخدامه كخادم جاهز للاستخدام. يأتي مزودًا بأمر مدمج git daemonلتشغيل خادم TCP بسيط يعمل على بروتوكول Git. [ 95 ] [ 96 ] تُساعد خوادم Git HTTP المُخصصة (إلى جانب ميزات أخرى) في إضافة التحكم في الوصول، وعرض محتويات مستودع Git عبر واجهات الويب، وإدارة مستودعات متعددة. يُمكن استنساخ مستودعات Git الموجودة ومشاركتها ليستخدمها الآخرون كمستودع مركزي. كما يُمكن الوصول إليه عبر سطر الأوامر عن بُعد بمجرد تثبيت برنامج Git والسماح للمستخدم بتسجيل الدخول. [ 97 ] تستمع خوادم Git عادةً على منفذ TCP 9418. [ 98 ]
لتصفح المستودعات عبر الويب، يتم أيضًا شحن Git مع gitweb، وهي واجهة تعتمد على CGI لعرض محتويات المستودع عبر HTTP. [ 99 ]
المصادر المفتوحة
- استضافة خادم Git باستخدام Git Binary. [ 100 ]
- Gerrit هو خادم Git قابل للتكوين لدعم مراجعات التعليمات البرمجية وتوفير الوصول عبر SSH، أو Apache MINA أو OpenSSH مدمجين، أو خادم ويب Jetty مدمج . يوفر Gerrit تكاملاً مع LDAP وActive Directory وOpenID وOAuth وKerberos/GSSAPI وشهادات عميل X509 HTTPS. مع Gerrit 3.0، تُخزَّن جميع التكوينات كمستودعات Git، ولا يتطلب تشغيله قاعدة بيانات. يتضمن Gerrit ميزة طلبات السحب المدمجة في بنيته الأساسية، ولكنه يفتقر إلى واجهة مستخدم رسومية لها.
- فابريكاتور ، شركة منبثقة عن فيسبوك. وبما أن فيسبوك تستخدم ميركوريال بشكل أساسي ، فإن دعم جيت ليس بارزاً بنفس القدر. [ 101 ]
- إصدار RhodeCode Community Edition (CE)، الذي يدعم Git و Mercurial و Subversion بترخيص AGPLv3 .
- Kallithea ، التي تدعم كلاً من Git و Mercurial ، تم تطويرها بلغة Python بترخيص GPL .
- مشاريع خارجية مثل gitolite، [ 102 ] التي توفر نصوصًا برمجية فوق برنامج Git لتوفير تحكم دقيق في الوصول.
- توجد العديد من حلول البرمجيات الحرة والمفتوحة المصدر الأخرى للاستضافة الذاتية، بما في ذلك Gogs، [ 103 ] وGitea ، وهي نسخة معدلة من Gogs، بالإضافة إلى Forgejo ، وهي بدورها نسخة معدلة من Gitea. تم تطوير Gogs، بالإضافة إلى النسختين المعدلتين المذكورتين، باستخدام لغة Go . جميع هذه الحلول الثلاثة متاحة بموجب ترخيص MIT .
خادم Git كخدمة
تتوفر العديد من خدمات مستودعات Git. ومن أشهرها GitHub و SourceForge و Bitbucket و GitLab . [ 104 ] [ 19 ] [ 20 ] [ 21 ] [ 22 ]
واجهات المستخدم الرسومية
توفر برامج Git GUI واجهة مستخدم رسومية (GUI) لتبسيط التفاعل مع مستودعات Git.
توفر واجهات المستخدم الرسومية هذه تمثيلات مرئية لتاريخ المشروع، بما في ذلك الفروع، وعمليات الالتزام، وتغييرات الملفات. كما أنها تُسهّل إجراءات مثل تجهيز التغييرات، وإنشاء عمليات الالتزام، وإدارة الفروع. وتساعد أدوات المقارنة المرئية في حلّ تعارضات الدمج الناجمة عن التطوير المتزامن.
يأتي Git مزودًا بواجهة مستخدم رسومية Tcl/Tk ، والتي تسمح للمستخدمين بتنفيذ إجراءات مثل إنشاء وتعديل الالتزامات، وإنشاء ودمج الفروع، والتفاعل مع المستودعات البعيدة. [ 105 ]
بالإضافة إلى واجهة المستخدم الرسومية الرسمية، توجد العديد من واجهات الطرف الثالث التي توفر ميزات مشابهة لواجهة المستخدم الرسومية الرسمية الموزعة مع Git. [ 106 ]
تُسهّل واجهات المستخدم الرسومية تعلم واستخدام Git، مما يُحسّن كفاءة سير العمل ويقلل الأخطاء.
التبني
أفادت مؤسسة إكليبس في استطلاعها السنوي للمجتمع أنه اعتبارًا من مايو 2014 كان Git الأداة الأكثر استخدامًا لإدارة شفرة المصدر، حيث أفاد 42.9% من مطوري البرامج المحترفين أنهم يستخدمون Git كنظامهم الأساسي للتحكم في المصدر [ 107 ]، مقارنةً بـ 36.3% في عام 2013، و32% في عام 2012؛ أو بالنسبة لاستجابات Git باستثناء استخدام GitHub : 33.3% في عام 2014، و30.3% في عام 2013، و27.6% في عام 2012، و12.8% في عام 2011. [ 108 ] وأفاد دليل المصادر المفتوحة Open Hub عن إقبال مماثل بين مشاريع المصادر المفتوحة. [ 109 ]
أدرج موقع Stack Overflow نظام التحكم في الإصدارات في استطلاعاته السنوية للمطورين [ 110 ] في الأعوام 2015 (16,694 ردًا)، [ 111 ] و2017 (30,730 ردًا)، [ 112 ] و 2018 (74,298 ردًا)، [ 113 ] و2022 (71,379 ردًا). [ 17 ] وكان Git هو الخيار المفضل لدى المطورين المشاركين في هذه الاستطلاعات، حيث بلغت نسبة تفضيله 93.9% في عام 2022.
أنظمة التحكم في الإصدارات التي يستخدمها المطورون المستجيبون:
| اسم | 2015 | 2017 | 2018 | 2022 |
|---|---|---|---|---|
| جيت | 69.3% | 69.2% | 87.2% | 93.9% |
| التخريب | 36.9% | 9.1% | 16.1% | 5.2% |
| TFVC | 12.2% | 7.3% | 10.9% | [ ii ] |
| زئبقي | 7.9% | 1.9% | 3.6% | 1.1% |
| سي في إس | 4.2% | [ ii ] | [ ii ] | [ ii ] |
| بيرفورس | 3.3% | [ ii ] | [ ii ] | [ ii ] |
| VSS | [ ii ] | 0.6% | [ ii ] | [ ii ] |
| IBM DevOps Code ClearCase | [ ii ] | 0.4% | [ ii ] | [ ii ] |
| نسخ احتياطية من الملفات المضغوطة | [ ii ] | 2.0% | 7.9% | [ ii ] |
| مشاركة الشبكة الخام | [ ii ] | 1.7% | 7.9% | [ ii ] |
| آخر | 5.8% | 3.0% | [ ii ] | [ ii ] |
| لا أحد | 9.3% | 4.8% | 4.8% | 4.3% |
أفاد موقع itjobswatch.co.uk، المتخصص في وظائف تكنولوجيا المعلومات في المملكة المتحدة، أنه حتى أواخر سبتمبر 2016، أشارت 29.27% من وظائف تطوير البرمجيات الدائمة في المملكة المتحدة إلى استخدام Git، [ 114 ] متقدماً على Microsoft Team Foundation Server بنسبة 12.17% ، [ 115 ] و Subversion بنسبة 10.60% ، [ 116 ] و Mercurial بنسبة 1.30% ، [ 117 ] و Visual SourceSafe بنسبة 0.48% . [ 118 ]
الإضافات
توجد العديد من إضافات Git ، مثل Git LFS، التي بدأت كإضافة لـ Git في مجتمع GitHub، وتُستخدم الآن على نطاق واسع في مستودعات أخرى. عادةً ما يتم تطوير الإضافات وصيانتها بشكل مستقل من قِبل أشخاص مختلفين، ولكن في مرحلة ما في المستقبل، يمكن دمج إضافة شائعة الاستخدام مع Git.
تتضمن إضافات Git الأخرى مفتوحة المصدر ما يلي:
- git-annex ، نظام مزامنة ملفات موزع يعتمد على Git
- git-flow ، وهي مجموعة من ملحقات Git لتوفير عمليات مستودع عالية المستوى لنموذج التفرع الخاص بفينسنت دريسن
- git-machete، أداة لتنظيم المستودعات وأتمتة عمليات إعادة التأسيس/الدمج/السحب/الدفع
طوّرت مايكروسوفت نظام الملفات الافتراضي لـ Git (VFS for Git؛ المعروف سابقًا باسم نظام الملفات الافتراضي لـ Git أو GVFS) للتعامل مع حجم شجرة شفرة المصدر لنظام ويندوز كجزء من عملية انتقالها من Perforce في عام 2017. يسمح VFS for Git للمستودعات المستنسخة باستخدام عناصر نائبة لا يتم تنزيل محتوياتها إلا عند الوصول إلى ملف. [ 119 ]
الاتفاقيات
يمكن استخدام Git بطرق مختلفة ومتنوعة، ولكن يتم اعتماد بعض الاتفاقيات بشكل شائع.
- يُنشئ الأمر ` git init` لإنشاء مستودع محلي فرعًا باسم `master` . [ 66 ] [ 120 ] ويُستخدم غالبًا كفرع دمج لدمج التغييرات. [ 121 ] بعض الأدوات، مثل GitHub [ 122 ] وGitLab، [ 123 ] تُنشئ فرعًا افتراضيًا باسم `main` ؛ وسيبدأ Git باستخدام `main` بدءًا من الإصدار 3.0، المتوقع بنهاية عام 2026. [ 124 ] بما أن اسم المستودع البعيد الافتراضي هو `origin` ، [ 125 ] فإن الفرع البعيد الافتراضي هو `origin/master` . كما يمكن للمستخدمين إضافة وحذف الفروع واختيار أي فرع للدمج.
- لا تُستبدل التغييرات المدفوعة عادةً، بل تُستعاد [ 126 ] بإجراء تغيير آخر يعكس تغييرًا سابقًا. يمنع هذا التغييرات المشتركة من أن تصبح غير صالحة لأن التغيير الذي بُنيت عليه غير موجود في المستودع البعيد. إذا احتوت التغييرات على معلومات حساسة، فيجب حذفها، وهو ما يتطلب إجراءً أكثر تعقيدًا لإعادة كتابة سجل التغييرات.
- غالبًا ما يتم اعتماد سير العمل واتفاقيات التسمية الخاصة بـ git -flow [ 127 ] لتمييز السجلات غير المستقرة الخاصة بالميزات (feature/*)، والسجلات المشتركة غير المستقرة (develop)، والسجلات الجاهزة للإنتاج (main)، والتصحيحات الطارئة للمنتجات التي تم إصدارها (hotfix).
- طلب السحب ، أو طلب الدمج ، هو طلب من المستخدم لدمج فرع في فرع آخر. [ 128 ] [ 129 ] لا يدعم Git طلبات السحب بشكل مباشر، لكنها ميزة شائعة في خدمات Git السحابية. لا تختلف الوظيفة الأساسية لطلب السحب عن وظيفة مدير المستودع الذي يسحب التغييرات من مستودع بعيد آخر (المستودع الذي يمثل مصدر طلب السحب). مع ذلك، يُعد طلب السحب بمثابة تذكرة يديرها الخادم المُضيف الذي يُنفذ هذه الإجراءات؛ فهو ليس ميزة من ميزات نظام إدارة الإصدارات Git.
حماية
لا يوفر Git آليات للتحكم في الوصول، ولكنه صُمم للعمل مع أدوات أخرى متخصصة في التحكم في الوصول. [ 130 ]
في 17 ديسمبر 2014، تم اكتشاف ثغرة أمنية تؤثر على إصداري عميل Git لنظامي التشغيل Windows و macOS . يستطيع المهاجم تنفيذ تعليمات برمجية ضارة على جهاز مستهدف مُثبّت عليه Git، وذلك بإنشاء مجلد فرعي خبيث باسم .git (وهو مجلد في مستودعات Git يخزن جميع بيانات المستودع) بأحرف مختلفة (مثل .GIT أو .Git، لأن Git لا يسمح بإنشاء المجلد الفرعي .git بأحرف صغيرة فقط يدويًا)، مع وجود ملفات خبيثة في المجلد الفرعي .git/hooks (وهو مجلد يحتوي على ملفات تنفيذية يُشغّلها Git) على مستودع أنشأه المهاجم أو على مستودع يمكنه تعديله. إذا قام مستخدم نظامي التشغيل ويندوز أو ماك بتنزيل نسخة من المستودع تحتوي على الدليل الخبيث، ثم انتقل إلى ذلك الدليل، فسيتم استبدال محتويات دليل .git (بسبب عدم حساسية أنظمة ملفات ويندوز وماك لحالة الأحرف)، وقد يتم تشغيل الملفات التنفيذية الخبيثة الموجودة في .git/hooks ، مما يؤدي إلى تنفيذ أوامر المهاجم. كما يمكن للمهاجم تعديل ملف التكوين .git/config ، مما يسمح له بإنشاء أسماء مستعارة خبيثة لـ Git (أسماء مستعارة لأوامر Git أو أوامر خارجية) أو تعديل الأسماء المستعارة الموجودة لتنفيذ أوامر خبيثة عند تشغيلها. تم إصلاح هذه الثغرة الأمنية في الإصدار 2.2.1 من Git، الذي صدر في 17 ديسمبر 2014، وأُعلن عنه في اليوم التالي. [ 131 ] [ 132 ]
تضمنت نسخة Git 2.6.1، الصادرة في 29 سبتمبر 2015، رقعةً أمنيةً لمعالجة ثغرة (CVE-2015-7545) [ 133 ] تسمح بتنفيذ تعليمات برمجية عشوائية. [ 134 ] يمكن استغلال هذه الثغرة إذا تمكن المهاجم من إقناع الضحية بنسخ عنوان URL محدد، حيث كانت الأوامر العشوائية مضمنةً في عنوان URL. [ 135 ] يمكن للمهاجم استغلال هذه الثغرة عبر هجوم الوسيط (Man-in-the-Middle attack) إذا كان الاتصال غير مشفر، [ 135 ] حيث يمكنه إعادة توجيه المستخدم إلى عنوان URL من اختياره. كما كانت عمليات النسخ المتكررة عرضةً لهذه الثغرة، لأنها تسمح لمتحكم المستودع بتحديد عناوين URL عشوائية عبر ملف gitmodules. [ 135 ]
يستخدم Git خوارزمية SHA-1 للتجزئة داخليًا. وقد أوضح لينوس تورفالدز أن الغرض الأساسي من التجزئة هو الحماية من التلف العرضي، وأن الأمان الذي توفره التجزئة الآمنة تشفيرًا هو مجرد أثر جانبي غير مقصود، بينما يكمن الأمان الرئيسي في التوقيع في مكان آخر. [ 136 ] [ 137 ] منذ عرض هجوم SHAttered على Git في عام 2017، تم تعديل Git لاستخدام نسخة معدلة من SHA-1 مقاومة لهذا الهجوم. ويجري العمل على خطة لانتقال دالة التجزئة منذ فبراير 2020. [ 138 ]
علامة تجارية
"Git" هي علامة تجارية مسجلة لكلمة Software Freedom Conservancy ، مسجلة لدى مكتب براءات الاختراع والعلامات التجارية بالولايات المتحدة برقم التسجيل 4680534 منذ 2015-02-03.
انظر أيضاً
ملحوظات
مراجع
- ↑ "المراجعة الأولية لـ "git"، مدير المعلومات الكارثي" . GitHub . 8 أبريل 2005. مؤرشف من الأصل في 16 نوفمبر 2015. تم الاطلاع عليه في 20 ديسمبر 2015 .
- ↑ "مخطط الالتزام" . جيت هاب . 8 يونيو 2016. مؤرشف من الأصل في 20 يناير 2016. تم الاسترجاع في 19 ديسمبر 2015 .
- ^ جونيو سي هامانو (29 يونيو 2026). " [ إعلان ] Git v2.55.0 " . تم الاسترجاع في 1 يوليو 2026 .
- ↑ "موقع Git الإلكتروني" . مؤرشف من الأصل في 9 يونيو 2022. تم الاطلاع عليه في 9 يونيو 2022 .
- ↑ "مرآة شفرة المصدر لـ Git" . GitHub . مؤرشف من الأصل في 3 يونيو 2022. تم الاطلاع عليه في 9 يونيو 2022 .
- ↑ "رخصة Git LGPL على github.com" . GitHub . 20 مايو 2011. مؤرشف من الأصل في 11 أبريل 2016. تم الاطلاع عليه في 12 أكتوبر 2014 .
- ↑ "رخصة GPL الخاصة بـ Git على github.com" . GitHub . ١٨ يناير ٢٠١٠. مؤرشف من الأصل في ١١ أبريل ٢٠١٦. تم الاطلاع عليه في ١٢ أكتوبر ٢٠١٤ .
- ↑ حديث تقني: لينوس تورفالدز يتحدث عن جيت . ١٤ مايو ٢٠٠٧. يبدأ الحدث في تمام الساعة ٠٠:٠١:٣٠. مؤرشف من الأصل في ٢٠ ديسمبر ٢٠١٥. تم الاطلاع عليه في ٢٠ يوليو ٢٠١٤ - عبر يوتيوب .
- ↑ تشاكون وستراوب 2014 ، ص 29-31.
- ١ ٢ "تاريخ موجز لـ Git" . Pro Git ( الطبعة الثانية). Apress. ٢٠١٤. مؤرشف من الأصل في ٢٥ ديسمبر ٢٠١٥. تم الاطلاع عليه في ٢٦ ديسمبر ٢٠١٥ .
- 1 2 تورفالدز، لينوس (7 أبريل 2005). "ردًا على: ملحمة إدارة تكوين البرمجيات في نواة لينكس..." (قائمة بريدية لنواة لينكس ). مؤرشف من الأصل في 1 يوليو 2019. تم الاطلاع عليه في 3 فبراير 2017 ."لذا فأنا أكتب بعض البرامج النصية لمحاولة تتبع الأمور بشكل أسرع بكثير."
- 1 2 تورفالدز، لينوس (10 يونيو 2007). "ردًا على: خطأ فادح: تناقض خطير في تضخيم الملفات" . git (قائمة بريدية). مؤرشف من الأصل في 28 ديسمبر 2022. تم الاطلاع عليه في 3 فبراير 2017 .
- ١ ٢ ٣ ٤ لينوس تورفالدز (٣ مايو ٢٠٠٧). محاضرة تقنية من جوجل: لينوس تورفالدز حول جيت . يبدأ الحدث في الساعة ٢:٣٠. مؤرشف من الأصل في ٢٨ مايو ٢٠٠٧. تم الاطلاع عليه في ١٦ مايو ٢٠٠٧ .
- ^ تشاكون ، سكوت (24 ديسمبر 2014). برو جيت (الطبعة الثانية ). نيويورك، نيويورك: أبريس . ص 29 – 30. ISBN 978-1-4842-0077-3تمت أرشفة هذا النص من المصدر الأصلي في 25 ديسمبر 2015.
- ↑ شيري، راسل ج. (1 مارس 2015). "جيت كنظام تحكم في الإصدارات موزّع ومشفّر" (ملف PDF) . مركز المعلومات التقنية للدفاع . ص 38. تاريخ الاسترجاع: 13 يوليو 2025 .
- ↑ كنوبفر، أندرياس؛ كالو، تيموثي ج. (2025). "إدارة إصدارات البيانات وإمكانية إعادة إنتاجها بواسطة الآلة للحوسبة عالية الأداء بالاعتماد على git و DataLad". arXiv : 2505.06558 [ cs.DC ].
- 1 2 "استطلاع رأي مطوري ستاك أوفرفلو 2022" . ستاك أوفرفلو . مؤرشف من الأصل في 27 يونيو 2022. تم الاطلاع عليه في 4 أغسطس 2022 .
- ↑ كريل، بول (28 سبتمبر 2016). "حروب مستودعات المؤسسات: جيت هاب ضد جيت لاب ضد بيت باكيت" . إنفوورلد . مؤرشف من الأصل في 2 فبراير 2020. تم الاطلاع عليه في 2 فبراير 2020 .
- 1 2 "تحليل تنافسي لموقع github.com، المزيج التسويقي وحركة المرور" . أليكسا . مؤرشف من الأصل في 31 مارس 2013. تم الاطلاع عليه في 2 فبراير 2020 .
- 1 2 "تحليل تنافسي لموقع sourceforge.net، المزيج التسويقي، وحركة المرور" . أليكسا . مؤرشف من الأصل في 20 أكتوبر 2020. تم الاطلاع عليه في 2 فبراير 2020 .
- 1 2 "تحليل تنافسي لموقع bitbucket.org، المزيج التسويقي، وحركة المرور" . أليكسا . مؤرشف من الأصل في 23 يونيو 2017. تم الاطلاع عليه في 2 فبراير 2020 .
- 1 2 "تحليل تنافسي لموقع gitlab.com، المزيج التسويقي وحركة المرور" . أليكسا . مؤرشف من الأصل في 30 نوفمبر 2017. تم الاطلاع عليه في 2 فبراير 2020 .
- ↑ براون، زاك (27 يوليو 2018). "قصة نشأة جيت" . مجلة لينكس . مجلة لينكس. مؤرشف من الأصل في 13 أبريل 2020. تم الاطلاع عليه في 28 مايو 2020 .
- ↑ "BitKeeper وLinux: هل هذه هي النهاية؟" . Linux.com . 11 أبريل 2005. تم الاطلاع عليه بتاريخ 18 مايو 2023 .
- ↑ ماكاليستر، نيل (2 مايو 2005). "خطأ لينوس تورفالدز في BitKeeper" . إنفوورلد . مؤرشف من الأصل في 26 أغسطس 2015. تم الاطلاع عليه في 8 سبتمبر 2015 .
- 1 2 تورفالدز، لينوس (27 فبراير 2007). "ردًا على: معلومة جانبية: متى أصبح git يستضيف نفسه ذاتيًا؟" . git (قائمة بريدية). مؤرشف من الأصل في 8 أبريل 2023. تم الاطلاع عليه في 3 فبراير 2017 .
- ↑ تورفالدز، لينوس (6 أبريل 2005). "ملحمة إدارة تكوين نواة لينكس" . قائمة بريدية لنواة لينكس . مؤرشفة من الأصل في 8 يونيو 2023. تم الاطلاع عليها في 3 فبراير 2017 .
- ↑ تورفالدز، لينوس (17 أبريل 2005). "أول دمج حقيقي لنواة نظام التشغيل باستخدام Git!" . git (قائمة بريدية). مؤرشف من الأصل في 15 أغسطس 2021. تم الاطلاع عليه في 3 فبراير 2017 .
- ↑ ماكال، مات (29 أبريل 2005). "مقارنة أداء Mercurial 0.4b مع git patchbomb" . git (قائمة بريدية). مؤرشف من الأصل في 15 أغسطس 2021. تم الاطلاع عليه في 3 فبراير 2017 .
- ↑ تورفالدز، لينوس (17 يونيو 2005). "لينكس 2.6.12" . git-commits-head (قائمة بريدية).
- ↑ تورفالدز، لينوس (27 يوليو 2005). "تعرّف على المسؤول الجديد". git (قائمة بريدية). مؤرشف من الأصل في 15 أغسطس 2021. تم الاطلاع عليه في 3 فبراير 2017 .
- ^ هامانو ، جونيو سي. (21 ديسمبر 2005). "أعلن: Git 1.0.0" . بوابة (القائمة البريدية). مؤرشفة من الأصلي في 16 أغسطس 2021 . تم الاسترجاع في 3 فبراير 2017 .
- ↑ "أسئلة وأجوبة حول Git: لماذا اسم 'Git'؟" . Git.or.cz. مؤرشف من الأصل بتاريخ 23 يوليو 2012. تم الاطلاع عليه بتاريخ 14 يوليو 2012 .
- ↑ "بعد الجدل، بدأ تورفالدز العمل على 'git'"« . PC World . ١٤ يوليو ٢٠١٢. مؤرشف من الأصل في ١ فبراير ٢٠١١.» بدا
تورفالدز مدركًا أن قراره بالتخلي عن BitKeeper سيثير جدلًا واسعًا. وعندما سُئل عن سبب تسميته البرنامج الجديد بـ "git"، وهي كلمة عامية بريطانية تعني "شخصًا سيئًا"، قال: «أنا شخص أناني، لذلك أسمي جميع مشاريعي باسمي. أولًا لينكس، والآن git».
- ↑ "صفحة دليل git(1)" . مؤرشفة من الأصل في 21 يونيو 2012. تم الاطلاع عليها في 21 يوليو 2012 .
- ↑ "المراجعة الأولية لـ 'git'، مدير المعلومات الكارثي · git/git@e83c516" . GitHub . مؤرشف من الأصل في 8 أكتوبر 2017. تم الاطلاع عليه في 21 يناير 2016 .
- ↑ "git/usage.c at master · git/git" . GitHub . مؤرشف من الأصل بتاريخ 26 فبراير 2025. تم الاطلاع عليه بتاريخ 11 يوليو 2025 .
- ↑ تورفالدز، لينوس (7 أبريل 2005). "المراجعة الأولية لـ "git"، مدير المعلومات الكارثي · git/git@e83c516" . جيت هاب . مؤرشف من الأصل في 16 نوفمبر 2015. تم الاطلاع عليه في 11 يوليو 2025 .
- ↑ "Git – سير العمل الموزع" . Git . مؤرشف من الأصل في 22 أكتوبر 2014. تم الاطلاع عليه في 15 يونيو 2020 .
- ↑ غونجال، سيديش (19 يوليو 2019). "ما هي أداة التحكم في الإصدارات؟ استكشف Git وGitHub" . Medium . مؤرشف من الأصل في 17 أبريل 2025. تم الاطلاع عليه في 25 أكتوبر 2020 .
- ↑ تورفالدز، لينوس (19 أكتوبر 2006). "رد: جدول مقارنة أنظمة التحكم في الإصدارات" . git (قائمة بريدية). مؤرشف من الأصل في 18 يونيو 2017. تم الاطلاع عليه في 3 فبراير 2017 .
- ↑ مدونة Jst على موقع Mozillazine بعنوان "أداء bzr/hg/git" . مؤرشفة من الأصل بتاريخ 29 مايو 2010. تم الاطلاع عليها بتاريخ 12 فبراير 2015 .
- ↑ دراير، رولاند (13 نوفمبر 2006). "يا له من ارتياح!" . مؤرشف من الأصل في 16 يناير 2009.، مع ملاحظة أن "git log" أسرع 100 مرة من "svn log" لأن الأخير يجب أن يتصل بخادم بعيد.
- ↑ "الثقة" . مفاهيم جيت . دليل مستخدم جيت. ١٨ أكتوبر ٢٠٠٦. مؤرشف من الأصل في ٢٢ فبراير ٢٠١٧.
- ↑ تورفالدز، لينوس. "رد: جدول مقارنة أنظمة التحكم في الإصدارات" . git (قائمة بريدية). مؤرشف من الأصل في 11 أبريل 2016. تم الاطلاع عليه في 10 أبريل 2009 .، واصفاً تصميم Git الموجه نحو البرمجة النصية
- ↑ iabervon (22 ديسمبر 2005). "Git rocks!" . مؤرشف من الأصل في 14 سبتمبر 2016.، مشيداً بإمكانية برمجة Git.
- ↑ "Git – Git SCM Wiki" . git.wiki.kernel.org . مؤرشف من الأصل في 6 فبراير 2010. تم الاطلاع عليه في 25 أكتوبر 2020 .
- ↑ تشاكون وستراوب 2014 .
- ↑ "دليل مستخدم Git" . 10 مارس 2020. مؤرشف من الأصل في 10 مايو 2020.
- ↑ تشاكون وستراوب 2014 ، ص 499.
- ↑ تشاكون وستراوب 2014 ، ص 33-34.
- 1 2 "Git – Packfiles" . Git . مؤرشف من الأصل في 26 يوليو 2025. تم الاسترجاع في 25 أغسطس 2025 .
- ↑ تشاكون وستراوب 2014 ، ص 568.
- ↑ تورفالدز، لينوس (10 أبريل 2005). "ردًا على: المزيد من تحديثات جيت". قائمة بريدية لنواة لينكس . مؤرشفة من الأصل في 18 يونيو 2017. تم الاطلاع عليها في 3 فبراير 2017 .
- ↑ هايبيل، برونو (11 فبراير 2007). "كيفية تسريع 'git log'؟" . git (قائمة بريدية). مؤرشف من الأصل في 18 يونيو 2017. تم الاطلاع عليه في 3 فبراير 2017 .
- ↑ تورفالدز، لينوس (1 مارس 2006). "رد: عمليات إعادة التسمية غير النقية / تتبع السجل" . git (قائمة بريدية). مؤرشف من الأصل في 3 مايو 2017. تم الاسترجاع في 3 فبراير 2017 .
- ↑ هامانو، جونيور سي. (24 مارس 2006). "رد: أخطاء في استخدام GIT مع GCC وBinutils" . git (قائمة بريدية). مؤرشف من الأصل في 18 يونيو 2017. تم الاطلاع عليه في 3 فبراير 2017 .
- ↑ هامانو، جونيور سي. (23 مارس 2006). "رد: أخطاء في استخدام Git مع GCC وBinutils" . git (قائمة بريدية). مؤرشف من الأصل في 18 يونيو 2017. تم الاطلاع عليه في 3 فبراير 2017 .
- ↑ تورفالدز، لينوس (28 نوفمبر 2006). "رد: git و bzr" . git (قائمة بريدية). مؤرشف من الأصل في 18 يونيو 2017. تم الاطلاع عليه في 3 فبراير 2017 .، عند استخدامها
git-blameلعرض الكود المنقول بين ملفات المصدر. - ↑ تورفالدز، لينوس (18 يوليو 2007). "git-merge(1)" . مؤرشف من الأصل في 16 يوليو 2016.
- ↑ تورفالدز، لينوس (18 يوليو 2007). "CrissCrossMerge" . مؤرشف من الأصل في 13 يناير 2006.
- ↑ تورفالدز، لينوس (10 أبريل 2005). "ردًا على: المزيد من تحديثات git..." قائمة بريدية لنواة لينكس . مؤرشف من الأصل في 18 يونيو 2017. تم الاطلاع عليه في 3 فبراير 2017 .
- ↑ تورفالدز، لينوس (23 مارس 2006). "رد: أخطاء في استخدام Git مع GCC وBinutils" . git (قائمة بريدية). مؤرشف من الأصل في 22 مارس 2021. تم الاطلاع عليه في 3 فبراير 2017 .
- 1 2 "Git - Git Objects" . git-scm.com . تم الاطلاع عليه في 1 أبريل 2026 .
- ↑ "Git – Git Objects" . Git . مؤرشف من الأصل في 29 يوليو 2025. تم الاطلاع عليه في 25 أغسطس 2025 .
- 1 2 Chacon & Straub 2014 ، ص 81-83.
- ↑ تشاكون وستراوب 2014 ، ص 485-488.
- ↑ تشاكون وستراوب 2014 ، ص 488-490.
- ↑ تشاكون وستراوب 2014 ، ص 495-496.
- ↑ تشاكون وستراوب 2014 ، ص 497-501.
- ↑ "Git – مراجع Git" . Git . مؤرشف من الأصل في 26 يوليو 2025. تم الاطلاع عليه في 25 أغسطس 2025 .
- ↑ "دليل مختصر لـ Git" (ملف PDF) . education.github.com . مؤرشف (ملف PDF) من النسخة الأصلية بتاريخ 19 يونيو 2024. تم الاطلاع عليه بتاريخ 10 يونيو 2024 .
- ↑ "دليل استخدام Git" (ملف PDF) . web.stanford.edu . مؤرشف (ملف PDF) من النسخة الأصلية بتاريخ 10 يونيو 2024. تم الاطلاع عليه بتاريخ 10 يونيو 2024 .
- ↑ "مقدمة سريعة عن Git" (ملف PDF) . data-skills.github.io . مؤرشف (ملف PDF) من الأصل بتاريخ 23 يونيو 2024. تم الاطلاع عليه بتاريخ 10 يونيو 2024 .
- ↑ با تران، أندرو. "أفضل الممارسات للتحميل على جيت هاب" (ملف PDF) . journalismcourses.org . مؤرشف (ملف PDF) من الأصل بتاريخ 10 سبتمبر 2024. تم الاطلاع عليه بتاريخ 10 يونيو 2024 .
- ↑ "تنسيق ملف تهيئة المشروع" . مراجعة كود Gerrit . مؤرشف من الأصل في 3 ديسمبر 2020. تم الاطلاع عليه في 2 فبراير 2020 .
- ↑ "التنزيلات" . مؤرشف من الأصل بتاريخ 8 مايو 2012. تم الاطلاع عليه بتاريخ 14 مايو 2012 .
- ↑ "إصدارات حزم Git - Repology" . مؤرشف من الأصل في 19 يناير 2022. تم الاطلاع عليه في 30 نوفمبر 2021 .
- ↑ "msysGit" . GitHub . مؤرشف من الأصل في 10 أكتوبر 2016. تم الاطلاع عليه في 20 سبتمبر 2016 .
- ↑ "Git – تنزيل الحزمة" . Git . مؤرشف من الأصل في 29 يوليو 2025. تم الاطلاع عليه في 25 أغسطس 2025 .( تمت أرشفة الكود المصدري في 26 يوليو 2025 على موقع Wayback Machine )
- ↑ "JGit" . مؤرشف من الأصل في 31 أغسطس 2012. تم الاطلاع عليه في 24 أغسطس 2012 .
- ↑ "Git – go-git" . Git . مؤرشف من الأصل في 22 أبريل 2025. تم الاطلاع عليه في 19 أبريل 2019 .
- ↑ "واجهة SQL لمستودعات Git، مكتوبة بلغة Go." ، github.com ، مؤرشفة من الأصل في 22 يونيو 2025 ، تم استرجاعها في 19 أبريل 2019
- ↑ "Keybase تطلق نظام Git مشفر" . keybase.io . مؤرشف من الأصل بتاريخ 16 مايو 2018. تم الاطلاع عليه بتاريخ 19 أبريل 2019 .
- ↑ "ملف README.md الخاص بمستودع Dulwich على GitHub" . GitHub . مؤرشف من الأصل بتاريخ 29 أبريل 2024. تم الاطلاع عليه بتاريخ 29 أبريل 2024 .
- ↑ "libgit2" . GitHub . مؤرشف من الأصل في 11 أبريل 2016. تم الاطلاع عليه في 24 أغسطس 2012 .
- ↑ "وعر" . جيت هاب . مؤرشف من الأصل في 24 يوليو 2013. تم الاسترجاع في 24 أغسطس 2012 .
- ↑ "pygit2" . GitHub . مؤرشف من الأصل في 5 أغسطس 2015. تم الاطلاع عليه في 24 أغسطس 2012 .
- ↑ "hlibgit2" . مؤرشف من الأصل بتاريخ 25 مايو 2013. تم الاطلاع عليه بتاريخ 30 أبريل 2013 .
- ↑ "js-git: تطبيق جافا سكريبت لـ Git" . GitHub . مؤرشف من الأصل في 7 أغسطس 2013. تم الاطلاع عليه في 13 أغسطس 2013 .
- ↑ "لعبة الأشجار" . gameoftrees.org . مؤرشف من الأصل في 18 يوليو 2025. تم الاطلاع عليه في 10 مارس 2024 .
- ↑ "git webls" . orib.dev . مؤرشف من الأصل في 10 فبراير 2025. تم الاطلاع عليه في 21 سبتمبر 2025 .
- ↑ "استضافة git9 ذاتيًا" . orib.dev . مؤرشف من الأصل في 10 فبراير 2025. تم الاطلاع عليه في 21 سبتمبر 2025 .
- ↑ "gitoxide: تطبيق Git بلغة Rust" . GitHub . تم الاطلاع عليه بتاريخ 18 ديسمبر 2025 .
{{cite web}}: CS1 maint: url-status ( link ) - ↑ تشاكون وستراوب 2014 ، ص 138-139.
- ↑ "Git – Git Daemon" . Git . مؤرشف من الأصل في 30 مايو 2025. تم الاطلاع عليه في 10 يوليو 2019 .
- ↑ 4.4 Git على الخادم - إعداد الخادم مؤرشف في 22 أكتوبر 2014 في Wayback Machine ، Pro Git.
- ↑ "1.4 البدء - تثبيت Git" . Git. مؤرشف من الأصل في 2 نوفمبر 2013. تم الاطلاع عليه في 1 نوفمبر 2013 .
- ↑ "Git - وثائق gitweb" . git-scm.com . تم الاطلاع عليه بتاريخ 13 مارس 2026 .
- ↑ تشاكون، سكوت؛ ستراوب، بن (2014). "Git على الخادم - إعداد الخادم" . برو جيت ( الطبعة الثانية). أبريس. ISBN 978-1484200773أُرشف من المصدر الأصلي في 30 يوليو 2025. تم الاطلاع عليه في 25 أغسطس 2025 .
- ↑ دليل مستخدم Diffusion: استضافة المستودع مؤرشف في 20 سبتمبر 2020 على Wayback Machine .
- ↑ "Gitolite: استضافة مستودعات Git" . مؤرشف من الأصل في 13 يونيو 2025. تم الاطلاع عليه في 25 أغسطس 2025 .
- ↑ "Gogs: خدمة Git سهلة الاستضافة الذاتية" . مؤرشف من الأصل في 25 يوليو 2025. تم الاطلاع عليه في 25 أغسطس 2025 .
- ↑ "أبرز ما في Git 2.26" . مدونة GitHub . 22 مارس 2020. مؤرشف من الأصل في 22 مارس 2021. تم الاطلاع عليه في 25 نوفمبر 2020.
ربما تتذكرون عندما قدم Git إصدارًا جديدًا من بروتوكول جلب الشبكة الخاص به في عام 2018. يُستخدم هذا البروتوكول الآن افتراضيًا في الإصدار 2.26، لذا دعونا نُذكّر أنفسنا بما يعنيه ذلك. تكمن المشكلة الأكبر في البروتوكول القديم في أن الخادم كان يُدرج على الفور جميع الفروع والوسوم والمراجع الأخرى في المستودع قبل أن تتاح للعميل فرصة إرسال أي شيء. بالنسبة لبعض المستودعات، قد يعني هذا إرسال ميغابايتات من البيانات الإضافية، بينما كان العميل يريد فقط معرفة الفرع الرئيسي (master). يبدأ البروتوكول الجديد بطلب العميل، ويوفر طريقة للعميل لإخبار الخادم بالمراجع التي يهتم بها. سيؤدي جلب فرع واحد إلى الاستفسار عن هذا الفرع فقط، بينما ستستفسر معظم عمليات الاستنساخ عن الفروع والوسوم فقط. قد يبدو هذا وكأنه كل شيء، لكن مستودعات الخوادم قد تخزن مراجع أخرى (مثل رأس كل طلب سحب تم فتحه في المستودع منذ إنشائه). الآن، تتحسن سرعة جلب البيانات من المستودعات الكبيرة، خاصةً عندما يكون حجم الجلب صغيرًا، مما يجعل تكلفة الإعلان الأولي عن المرجع أعلى نسبيًا. والأفضل من ذلك كله أنك لن تحتاج إلى فعل أي شيء! بفضل تصميم ذكي، يمكن لأي عميل يدعم البروتوكول الجديد العمل بسلاسة مع الخوادم القديمة والجديدة، والعودة إلى البروتوكول الأصلي إذا كان الخادم لا يدعمه. السبب الوحيد للتأخير بين طرح البروتوكول وجعله البروتوكول الافتراضي هو السماح للمستخدمين الأوائل باكتشاف أي أخطاء.
- ↑ "Git - git-gui Documentation" . Git . مؤرشف من الأصل في 26 يوليو 2025. تم الاطلاع عليه في 1 يوليو 2024 .
- ↑ "Git - عملاء واجهة المستخدم الرسومية" . Git . مؤرشف من الأصل في 28 يوليو 2025. تم الاسترجاع في 1 يوليو 2024 .
- ↑ "نتائج استطلاع مجتمع إكليبس 2014 | إيان سكريت" . Ianskerrett.wordpress.com. 23 يونيو 2014. مؤرشف من الأصل في 25 يونيو 2014. تم الاطلاع عليه في 23 يونيو 2014 .
- ↑ "نتائج استطلاع رأي مجتمع إكليبس 2012" . eclipse.org. مؤرشف من الأصل بتاريخ 11 أبريل 2016.
- ↑ "مقارنة المستودعات - المركز المفتوح" . مؤرشف من الأصل في 7 سبتمبر 2014.
- ↑ " استطلاع ستاك أوفرفلو السنوي للمطورين" . ستاك إكستشينج، إنك . تم الاطلاع عليه بتاريخ 9 يناير 2020.
يُعد استطلاع ستاك أوفرفلو السنوي للمطورين أكبر استطلاع وأكثرها شمولاً للمبرمجين حول العالم. في كل عام، نجري استطلاعًا يغطي كل شيء بدءًا من التقنيات المفضلة لدى المطورين وصولًا إلى تفضيلاتهم الوظيفية. يصادف هذا العام العام التاسع الذي ننشر فيه نتائج استطلاعنا السنوي للمطورين، وقد شارك ما يقرب من 90,000 مطور في الاستطلاع الذي استغرق 20 دقيقة في وقت سابق من هذا العام.
- ↑ "استطلاع رأي مطوري ستاك أوفرفلو لعام 2015" . ستاك أوفرفلو. مؤرشف من الأصل في 4 مايو 2019. تم الاطلاع عليه في 29 مايو 2019 .
- ↑ "استطلاع رأي مطوري ستاك أوفرفلو لعام 2017" . ستاك أوفرفلو. مؤرشف من الأصل بتاريخ 29 مايو 2019. تم الاطلاع عليه بتاريخ 29 مايو 2019 .
- ↑ "استطلاع رأي مطوري ستاك أوفرفلو لعام 2018" . ستاك أوفرفلو. مؤرشف من الأصل بتاريخ 30 مايو 2019. تم الاطلاع عليه بتاريخ 29 مايو 2019 .
- ↑ "وظائف Git (البرمجيات)، متوسط الراتب لمهارات نظام التحكم في الإصدارات الموزعة Git" . Itjobswatch.co.uk. مؤرشف من الأصل في 8 أكتوبر 2016. تم الاطلاع عليه في 30 سبتمبر 2016 .
- ↑ "وظائف خادم مؤسسة الفريق، متوسط الراتب لمهارات خادم مؤسسة فريق مايكروسوفت (TFS)" . Itjobswatch.co.uk. مؤرشف من الأصل بتاريخ 29 أكتوبر 2016. تم الاطلاع عليه بتاريخ 30 سبتمبر 2016 .
- ↑ "وظائف Subversion، متوسط الراتب لمهارات Apache Subversion (SVN)" . Itjobswatch.co.uk. مؤرشف من الأصل بتاريخ 25 أكتوبر 2016. تم الاطلاع عليه بتاريخ 30 سبتمبر 2016 .
- ↑ "وظائف متقلبة، متوسط الراتب للمهارات المتقلبة" . Itjobswatch.co.uk. مؤرشف من الأصل بتاريخ 23 سبتمبر 2016. تم الاطلاع عليه بتاريخ 30 سبتمبر 2016 .
- ↑ "وظائف VSS/SourceSafe، متوسط الراتب لمهارات Microsoft Visual SourceSafe (VSS)" . Itjobswatch.co.uk. مؤرشف من الأصل بتاريخ 29 أكتوبر 2016. تم الاطلاع عليه بتاريخ 30 سبتمبر 2016 .
- ↑ "انتقال ويندوز إلى جيت يكاد يكون مكتملاً: 8500 عملية إيداع و1760 عملية بناء يوميًا" . آرس تكنيكا . 24 مايو 2017. مؤرشف من الأصل في 24 مايو 2017. تم الاطلاع عليه في 24 مايو 2017 .
- ↑ "git-init" . جيت . مؤرشف من الأصل في 15 مارس 2022.
- ↑ "Git – الفروع باختصار" . Git . مؤرشف من الأصل في 20 ديسمبر 2020. تم الاطلاع عليه في 15 يونيو 2020. فرع "master" في Git ليس فرعًا خاصًا. إنه تمامًا مثل أي فرع آخر. السبب الوحيد لوجوده في كل مستودع تقريبًا هو أن أمر git init يُنشئه افتراضيًا، ومعظم المستخدمين لا يكلفون أنفسهم
عناء تغييره.
- ↑ github/renaming ، جيت هاب، 4 ديسمبر 2020، مؤرشف من الأصل في 26 يوليو 2025 ، تم استرجاعه في 4 ديسمبر 2020
- ↑ أصبح اسم الفرع الافتراضي للمستودعات الجديدة الآن هو main ، GitLab، 22 يونيو 2021، مؤرشف من الأصل في 19 مايو 2025 ، تم استرجاعه في 22 يونيو 2021
- ↑ "إصدار Git 2.52 مع مزيد من الاستعدادات لإصدار Git 3.0" . www.phoronix.com . تاريخ الاطلاع: 19 ديسمبر 2025 .
- ↑ تشاكون وستراوب 2014 ، ص 103-109.
- ↑ " Git Revert | Atlassian Git Tutorial" . Atlassian . مؤرشف من الأصل في 19 يونيو 2025. تم الاطلاع عليه في 25 أغسطس 2025.
للتراجع عن التغييرات ميزتان مهمتان مقارنةً بإعادة التعيين. أولاً، لا يُغير سجل المشروع، مما يجعله عملية "آمنة" للالتزامات التي نُشرت بالفعل في مستودع مشترك.
- ↑ "سير عمل Gitflow | برنامج تعليمي لـ Atlassian Git" . Atlassian . تم الاطلاع عليه بتاريخ 15 يونيو 2020 .
- ↑ تشاكون وستراوب 2014 ، ص 170-174.
- ↑ "سير عمل التفرع | برنامج تعليمي حول Git من Atlassian" . Atlassian . مؤرشف من الأصل في 24 يونيو 2020. تم الاطلاع عليه في 15 يونيو 2020 .
- ↑ "التحكم في الوصول إلى مستودع Git" . مؤرشف من الأصل بتاريخ 14 سبتمبر 2016. تم الاطلاع عليه بتاريخ 6 سبتمبر 2016 .
- ↑ بيترسن، تيم (20 ديسمبر 2014). "تأمين خادم Git الخاص بك ضد ثغرة CVE-2014-9390" . مؤرشف من الأصل في 24 ديسمبر 2014. تم الاطلاع عليه في 22 ديسمبر 2014 .
- ↑ هامانو، جيه سي (18 ديسمبر 2014). " [ إعلان ] Git الإصدار 2.2.1 (وتحديثات لمسارات الصيانة القديمة)" . مجموعة الأخبار : gmane.linux.kernel . مؤرشف من الأصل في 19 ديسمبر 2014. تم الاطلاع عليه في 22 ديسمبر 2014 .
- ↑ "CVE-2015-7545" . 15 ديسمبر 2015. مؤرشف من الأصل في 26 ديسمبر 2015. تم الاطلاع عليه في 26 ديسمبر 2015 .
- ↑ "Git 2.6.1" . GitHub . 29 سبتمبر 2015. مؤرشف من الأصل في 11 أبريل 2016. تم الاطلاع عليه في 26 ديسمبر 2015 .
- 1 2 3 بليك بوركهارت وآخرون (5 أكتوبر 2015). "ردًا على طلب CVE: git" . مؤرشف من الأصل في 27 ديسمبر 2015. تم الاطلاع عليه في 26 ديسمبر 2015 .
- ↑ "التجزئة - ما مدى أمان علامات Git الموقعة؟ هل هي آمنة مثل SHA-1 أم أكثر أمانًا؟" . موقع تبادل معلومات أمن المعلومات. 22 سبتمبر 2014. مؤرشف من الأصل في 24 يونيو 2016.
- ↑ "لماذا يستخدم Git دالة تجزئة تشفيرية؟" . Stack Overflow. 1 مارس 2015. مؤرشف من الأصل في 1 يوليو 2016.
- ↑ "Git – توثيق انتقال دالة التجزئة" . Git .
روابط خارجية
- جيت (برنامج)
- برنامج 2005
- نظام الإصدارات المتزامنة
- أنظمة التحكم في الإصدارات الموزعة
- برنامج مجاني للتحكم في الإصدارات
- برنامج مجاني مكتوب بلغة C
- برنامج مجاني مكتوب بلغة بيرل
- لينوس تورفالدز
- برامج الاستضافة الذاتية
- برنامج يستخدم رخصة جنو العمومية العامة
- برنامج يستخدم Tk (برنامج)
- أنظمة التحكم في الإصدارات
- مشاريع مفتوحة المصدر
