গিট (Git) এবং গিটহাব (Github):Part-1
গিট (Git) এবং গিটহাব (Github) এই শব্দ দুটো সফটওয়্যার ডেভেলপারদের মুখে প্রায়শই শোনা যায়। জুনিয়র/ফ্রেশারদের এই জিনিসগুলো শেখার তাগিদও দেন । কিন্ত ফ্রেশারদের মধ্যে সর্বপ্রথম যে ভাবনার উদয় হয় সেটা হলো-
আমার কাছে কোড এডিটর আছে, কম্পিউটারে কোড রাখার জন্য পর্যাপ্ত মেমোরি আছে, আর মাথার মধ্যে আছে ডেটা স্ট্রাকচার-এলগরিদম। তাহলে আমি কেন গিট এবং গিটহাব শিখতে যাব? শিখে লাভটা কোথায় ?
এই লাভ টা বুঝতে গেলে প্রথমে কিছু সমস্যার মধ্যে পড়তে হয়। এই সমস্যার মধ্যে যতদিন কেউ না পড়ে ততদিন গিট এবং গিটহাবের প্রয়োজনীয়তা বোঝা একটু কষ্টকর হয়ে যায়। তাই গিট এবং গিটহাব বোঝার আগে কিছু সমস্যা নিয়ে কথা বলি।

মনে করুন, আপনারা ইউনিভার্সিটির ল্যাবে বসে চার বন্ধু মিলে একটা স্কুল ম্যানেজমেন্ট সফটওয়্যার বানাচ্ছেন । চারজন চারটা কম্পিউটারে বসে কাজ করছেন। একজন টিচার মডিউল নিয়ে কাজ করছেন, একজন স্টুডেন্ট মডিউল নিয়ে কাজ করছেন, একজন ম্যানেজমেন্ট স্টাফ মডিউল নিয়ে কাজ করছেন, আরেকজন লাইব্রেরী মডিউল নিয়ে কাজ করছেন । এই চারজনের কাজ এক জায়গার করলে পুরো সফটওয়্যার রেডি হয়ে যাবে। এখন বলুনতো কিভাবে এই চারজনের কাজ এক জায়গায় মার্জ করা যায়? সরল মনে যে চিন্তাটা আসে সেটা হলো, একটা পেনড্রাইভে সবার কাজগুলো নিয়ে নিলেই হলো। অভিনন্দন- একদম ঠিক সমাধান বের করেছেন।
ধরুন হঠাৎ একদিন কোনো এক অনাকাঙ্খিত কারণে ইউনিভার্সিটি বন্ধ হয়ে গেল পনেরো দিনের জন্য । সুতরাং ইউনিভার্সিটির হলে থাকারও সুযোগ নেই, সবাই যার যার বাসায় চলে গেল। কিন্ত আপনারা চার বন্ধু তো সেই সফটওয়্যার ডেভলপমেন্ট বন্ধ রাখতে চান না। তখন আপনারা কিভাবে চারজনের কাজ এক জায়গায় করবেন? এত দূর থেকে পেনড্রাইভে তো আদান-প্রদান সম্ভব না। অবশ্যই উত্তর আসবে গুগল ড্রাইভের মাধ্যমে শেয়ার করব । উত্তর সঠিক হয়েছে কিন্ত একজন প্রোগ্রামার হিসেবে মানসম্মত উত্তর নয়।
আচ্ছা বলি তাহলে, উপরে যে দুইটা উপায়ে আমরা কোড এক জায়গায় করার কথা বলেছি সেটা বেশ ঝামেলাপূর্ণ । প্রতিটা আপডেটের পর আলাদা আলাদা পাঠানো তারপর ডাউনলোড করে এক জায়গায় মার্জ করা বেশ কষ্টসাধ্য এবং বিরক্তিকর । কিন্ত যদি এমন হয় যে, টার্মিনাল ওপেন করে ছোট ছোট দুই তিনটা লাইন লিখলাম আর সবার কোড এক জায়গায় সুন্দরভাবে মার্জ হয়ে গেল তাহলে কেমন হয়? অবশ্যই এটা বেশি সহজ এবং স্ট্যান্ডার্ড । ঠিক এই জিনিসটাই করা যায় গিট এবং গিটহাব ব্যবহার করে। ঠিক এইটুকু বোঝানোর জন্যই এতক্ষন বকবক করলাম। বিরক্ত হচ্ছেন? আচ্ছা বিরক্ত যখন হয়েছেন আরেকটু করি। পুরোটা পড়লেই সব ক্লিয়ার হয়ে যাবেন।
উপরের লিখা গুলা পড়ে আপনি হাসছেন আর ভাবছেন, আপনি তো “একাই একশো” টাইপের ডেভেলপার । আপনি কারো সাথে কোলাবোরেশন করেন না, নিজে নিজেই পুরো প্রজেক্ট রেডি করেন । তাহলে তো আপনার তো গিট না শিখলেও চলবে। কিন্ত না আপনি ঘুমের মধ্যে আছেন। আমি ঘুম ভাঙানিয়া পাখি, আমি এখন আপনার ঘুম ভাঙাবো ।
ধরে নিলাম, উপরের স্কুল ম্যানেজমেন্ট সফটওয়্যার টা আপনি একা ডেভেলপ করে ফেলেছেন । আপনার কম্পিউটারে কোনো এক ড্রাইভে “School Management” নামক এক ফোল্ডারে সব কোড আছে। এইবার স্কুল অথোরিটি আপনাকে বলল যে তাদের ম্যানেজমেন্ট সফটওয়্যার থেকে ম্যানেজমেন্ট স্টাফ মডিউলটা বাদ দিতে চাইছে। আপনি তাদের কথামত সফটওয়্যার থেকে ম্যানেজমেন্ট স্টাফ মডিউলটা বাদ দিয়ে দিলেন এবং আপডেটেড সফটওয়্যার এর কোড গুলো “School Management Without Staff” নামে আরেকটা ফোল্ডারে সেইভ দিয়ে রাখলেন। কিছুদিন পর আবার স্কুল অথোরিটি আপনাকে জানালো যে, ভর্তি পরীক্ষার রেজিস্ট্রেশন এখন থেকে অনলাইনে হবে তাই রেজিষ্ট্রেশন ফিচারটা আপনাকে সফটওয়্যারে ইমপ্লিমেন্ট করে দিতে হবে। আপনি আবার এই ফিচারটা এড করে “School Management Without Staff and Registration Added” নামে আরেকটা ফোল্ডারে সেইভ দিয়ে রাখলেন। এইভাবে যতবার আপনাকে নতুন কোনো রিকুয়ারমেন্ট দিবে আপনি ততটা নতুন ফোল্ডার ক্রিয়েট করে রাখবেন। ভাবা যায় !!
এই সমস্যা থেকেও উত্তরনের উপায় হলো গিট এবং গিটহাব ইউজ করা। আপনি যেকোন সময় আপনার সফটওয়্যার এর প্রতিটা ভার্সনের আপডেট পাবেন। ছয়মাস আগে যে আপডেট করেছিলেন সেটাও পাবেন , দুইদিন আগে যেটা আপডেট করেছেন সেটাও পাবেন । আপনাকে এরকম হাজারটা ফোল্ডার বানিয়ে রাখার মত বিদঘুটে কাজ করতে হবে না। এমনকি কম্পিউটারের হার্ডডিস্ক ফরম্যাট হয়ে গেলেও ভয় নাই, আপনার সব ডেটা পাবেন। অনেক ট্রাই করলাম বোঝানোর । বুঝছেন নাকি মাথার উপর দিয়ে যাচ্ছে ?
এইবার আসেন আরেকটা সুবিধার কথা বলি। গিট শেখার আগ্রহ নিয়ে যখন এখান পর্যন্ত আসছেন তখন আশা করা যায় “ওপেন সোর্স প্রজেক্ট কন্ট্রিবিউশন” এই টার্মটার সাথে আপনি পরিচিত। অর্থাৎ সহজ ভাষায় বলতে গেলে অন্যের একটা প্রজেক্টে আপনি কিছু কোড শেয়ার করবেন। এইসব ওপেন সোর্স প্রজেক্ট আপনি আপনার ইচ্ছে অনুযায়ী মডিফাই করতে পারেন। এটা নিয়ে ডিটেইলস বলে মাথা লাটিমের মত ঘোরাতে চাই না। আপাতত এটুকুই থাক।
যারা একেবারেই গিট এবং গিটহাবের সাথে পরিচিত না তাদের জন্য প্রয়োজনীয়তা বোঝানোর চেষ্টা করেছি এখানে। গিট এবং গিটহাব কি এবং কিভাবে কাজ করে এইটা পরের পর্ব থেকে লিখব ইনশাআল্লাহ।