فاتك نصف عمرك ان كنت تبرمج دون الـ Git | ما هو Git؟
مفيد للمبرمجين وغير المبرمجين، ولكن ساتطرق للفئة الاولى:
المبرمجين الفرديين: لأن كمية التغييرات التي يجريها المبرمج في الاعمال الحرة Freelancing قد تضيع أو تتكرر بشكل دوري
المبرمجين الذين يعملون عن بعد: لا يمكنني ان اشدد بما فيه الكفاية على اهمية الGit (وليس SVN) بالنسبة لفريق يعمل في عدة اماكن جغرافية.
فاذا كنت تحب السيطرة على جودة مشاريعك والوثوقية في العمل البرمجي، فانصح بالبدأ بتعلم استخدام Git اليوم. الحل الارخص Bitbucket
ال Git مفيد حقا إذا كنت تعمل ضمن فريق، ولكن إذا كنت تعمل بنفسك. فأجده مضيعة للوقت فحسب
أستخدم دروب بوكس لمراقبة النسخ والنسخ الاحتياطي وما إلى ذلك. فهذا ما ستحتاج له إذا كنت تعمل لوحدك
- وماذا ستفعل في حالة كان لديك مشروع وأردت تجربة فكرة معينة؟ وفي حالة نجحت تريد استخدامها في مشروعك؟
بالتأكيد ستقوم بنسخ المشروع الى مشروع جديد. وهكذا أصبح لديك نسختان! نسخة لتجربة الخاصية الجديدة ونسخة مستقرة لمشروعك.
المشكلة ستظهر لك حين تقوم بالدمج بينهم. خاصة اذا قمت بالتعديل في أكثر من ملف لتطبيق التجربة التي تريدها. ستضيع وقتك في شيء يفترض أن يكون automated. (وهذا بفرض أنك قمت بعملية الدمج بشكل صحيح. غالبا ستخطئ بها خاصة في حالة تركت العمل عدة أيام على المشروع).
Professional Developer لا يضيع وقته في أمور تنجز بواسطة tools وبشكل أكثر احترافية.
- أيضا ماذا لو كان لديك implementation لدالة ما (مثلا خوازرمية معينة) ولاحقا وجدت implementation آخر وأردت استخدامه، وفي نفس الوقت لا تريد حذف ال implementation السابق نهائيا حيث ربما تحتاج الى العودة إليه. دون استخدام git لا حل لك إلا أن تضع comments حولها أو تقوم بوضعها باسم مختلف unused method.
هي حلول لكنها ليست professional. عبر git كل commit مسجلة ولا تضيع، ويمكنك العودة بمشروعك الى أي مرحلة.
ماذا لو كنت تطور مشروعك عبر أكثر من جهاز واحد. في العمل وفي المنزل مثلا! هنا سنعود الى مشكلة الدمج السابقة.
أخيرا، في مرحلة معينة ستحتاج الى ضم مطورين معك.
كل هذه الحالات هي (ماذا لو، ماذا لو)
نعم، أستطيع الاستفادة من هذه الأمور
لكن المشكلة التي تظهر فيه، هي دفع الملفات، سحبها، تصنيفها، سحبها مجددا. أو ارسالها الى المستودع. وكل هذه الأمور الثانوية التي تستغرق وقتا
لكن طبعا سأفكر في استخدامه في مشاريع اكبر، لكن حاليا، كل المشاريع صغيرة فلا حاجة له فعليا. إذ ان دوري ينتهي بعد اكمال HTML/CSS/JS ويبدأ دور المبرمج ثم يتم التسليم للعميل ولا نعود للمشروع غالبا
في الحقيقة لا أعرف كيف تكون هذه الأمور "الثانوية" تستغرق وقتًا! هل حقًا إيداع التغييرات بين حين وآخر بعد إتمام ميزة ما مضيعة للوقت؟ ألا يقدم حماية لك من أن تقوم بشيء خاطئ على سبيل التجربة ثم تقرر أنه لم يفلح وتعود للنسخة القديمة؟ في الأسلوب التقليدي سترمي الطريقة القديمة في ملف مؤقت في مكان ما ثم تجرب الجديدة ثم قد تفشل وتقرر العودة إلى النسخة السابقة التي نسيت أين وضعتها... ماذا لو أردت أن تعمل نسخة جديدة من المشروع بتغييرات كبيرة قد تشمل أساساته؟ هل ستبدأ بتغيير كل شيء دفعة واحدة أم تضيع وقتك في محاولة جعل الميزة القديمة كذا التي لم تغيرها بعد تتعامل مع القسم الجديد الذي أعدت كتابته؟ ماذا لو أمكنك الانتقال إلى فرع جديد branch وعمل ما تشاء من التغييرات دون خوف من فقد ميزة تعلم أنها مستقرة؟ ثم دمج هذه التغييرات دفعة واحدة بعد التأكد من تلاؤمها معًا في الفرع المستقر وإصدار النسخة الجديدة؟
أعتقد أن المطورين يأخذون كل شيء على محمل الجد، وعندما تقول لهم "تعلموا Git"، فإنهم يتوقعون أن عليهم قراءة وفهم وتجربة كل الأوامر التي يتيحها Git، الأمر ينطبق على أي شيء جديد، أعتقد أن هذه مشكلة يواجهها المبرمجون المحترفون أكثر من غيرهم، لأنهم يقدّرون قيمة البرامج الجيدة ويفترضون أنه عليهم أن يعطوها كامل حقها؛ لو نظرت إلى الأمر من وجهة نظر "نفعية"، فإنه ليس عليك سوى تعلم 5 أو 6 أوامر في Git تتيح لك تنفيذ أكثر المهمات شيوعاً، كالإيداع والإرسال والجلب وإنشاء الفرو ودمجها. أما إن احتجت إلى مزايا إضافية، فيكفي أن تعلم أنها موجودة وممكنة، وستتعلمها عندما تحتاجها بالفعل (هذا يوفر وقتك، ويجعلك تتعلم بالتطبيق المباشر، ويخلصك من خوف تعلم الأشياء الجديدة).
التعليقات