/ببساطة | نظام Git الجزء الأول

ببساطة | نظام Git الجزء الأول

نعود إليكم بعد انقطاع دام قرابة الشهرين، مع مجموعة مقالات جديدة عن نظام Git الشهير، نبدأها اليوم مع مقدمة بسيطة عن Git و Version Control Systems

ما هو Git ؟

هو أحد أنواع الـ Version Control Systems

إذا السؤال ماهو الـ Version Control Systems ؟

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

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

 Local Version Control Systems

من منا لا يقوم بعمل نسخة احتياطية من ملفاته الهامة وخاصةً الأكواد البرمجية، وحفظها في أماكن أخرى خوفًا عليها من التلف أو الضياع ؟!
هذه تُعتبر أبسط طرق الـ Version Control Systems، ولكن بالتأكيد هذا يعرضك لكثير من المخاطر فقد تنسى أخذ نسخة احتياطية في إحدى المرات، أو تنسى مكان حفظها .. إلخ

ولكن ماذا إذا كنت تعمل في مشروع ما، مع عدد من المبرمجين الآخرين ؟ كيف ستقومون بالكتابة سويا في المشروع وحفظ التعديلات التي تقومون بها لديكم جميعا ؟

Centralized Version Control Systems

لحل المشكلة الأخيرة التي ذكرناها، استُحدِث نظام Centralized Version Control Systems، حيث يقوم هذا النظام بحفظ كافة حالات الملفات وكل تعديلاتها في سيرفر واحد، متصل بعدد من الأجهزة الأخرى clients لحفظ كل التعديلات التي تتم على الملفات من أي مستخدم متصل على هذا السيرفر.
لكن ماذا لو تعطل هذا السيرفر أو حدث به خطأ ما ؟ كيف ستصل لهذه البيانات ؟

Distributed Version Control Systems

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

كانت هذه نبذة سريعة عن الـ Version Control Systems وأنواعها.

نعود لسؤالنا الأصلي إذا مرةً أخرى، ما هو Git ؟

كما ذكرنا هو أحد أنواع الـ Version Control Systems، وهو من الـ Distributed Systems ، صممه Linus Torvalds أثناء تطويره مع زملائه لـ Linux Kernel .

لماذا تستخدم Git ؟

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

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

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

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

هنا ستجد قائمة بالـ GUI Clients لنظام Git.

لكن بالتأكيد ليس هذا ما سنتطرق إليه بالشرح.

الخلاصة :

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

في اللقاء القادم نتناول نظام Git بشئ من التفصيل إن شاء الله ..