সফটওয়্যার ইঞ্জিনিয়ারিং এ গিট ও গিটহাব অবশ্যই কেন লাগে?

Roky Das
3 min readFeb 7, 2023

আমরা সফটওয়্যার ইঞ্জিনিয়ারিং এর যে ফিল্ডেই কাজ করি না কেন, আমাদের একটি জিনিস অবশ্যই লাগবে। সেটা হলো গিট। এখন কথা হলো এটা কি খায়, পিন্দে নাকি মাথায় দেয়। আবার গিটের সাথে গিটের ভাই গিটহাব কে ও আমরা শুনে থাকি। গিট ই যদি সব করে, তাহলে গিটহাব কেন লাগে? গিট ও গিটহাবের পার্থক্য কি? গিট ও গিটহাব কেন প্রয়োজনীয় বিগিনারদের এটা নিয়ে একদম সহজ বাংলা ভাষায় বেসিক একটা আইডিয়া দেওয়ার চেষ্টা করবো এই লেখায়।

গিট হচ্ছে একটা ভার্সন কন্ট্রোল সিস্টেম। এখন ধরেন আপনাকে আপনার ম্যানেজার ১ টা বড় ফিচার ইমপ্লিমেন্ট করতে দিলো। আপনি পুরো ফিচার টা কে কয়েকটা ভাগে ভাগ করলেন। এখন কাজ করতে গিয়ে সহজ ভাগ টা আপনি করা শুরু করলেন। ২ ভাগ করার পর ৩য় ভাগ করতে গিয়ে আপনি দেখলেন আপনি ৩য় অংশের পুরো জিনিস টা ভুল ভাবে ইমপ্লিমেন্ট করতে শুরু করেছেন। মানে যেভাবে আপনি চিন্তা করেছেন সেভাবে করতে গেলে সফটওয়ার এর পারফরম্যান্স খারাপ হবে, ফিচার টা অনেক কমপ্লেক্স হয়ে যাবে এবং পরে ফিচারে আপডেট আনতে কষ্ট হবে। এবার আপনি চিন্তা করলেন আগের কাজে ফেরত যাবেন। সহজ উপায়ে ctrl + z প্রেস করা শুরু করলেন। এখন আপনি ঝামেলা পাকিয়েছেন কাজের ৩য় ভাগে। এর আগের ২ ভাগ কিন্তু পারফেক্ট। তাহলে ctrl + z দিয়ে চলে গেলেন সেই অংশে। কিন্তু ধরেন আপনার এই ফিচারে ১০ টা ফাইল এফেক্টেড হয়েছে এবং আপনি ৩য় ভাগের কাজ শুরু করেছেন গতকাল। তাহলে একদম পারফেক্টলি নিশ্চিত ভাবে ২য় ভাগ কাজের শেষ অংশে কিভাবে যাবেন? পুরোটাই আপনার স্মৃতির উপর ভরসা রেখে করতে হবে এবং বুঝেই গিয়েছেন এটা খুবই কষ্টসাধ্য, সময় সাপেক্ষ অনিশ্চিত।

যদি এমন কোন সিস্টেম থাকতো যেভাবে গেইমে যেভাবে একটা লেভেল পার করতে না পারলে আগের লেভেল এর শেষ অংশে গেইম অটো চলে যায় ঠিক তেমনি যদি পুরো প্রজেক্ট কে সেভাবে আগের লেভেলের শেষ অংশে নিয়ে যেতে পারেন তাহলে অনেক সুবিধা হতো। এমন ই একটা সিস্টেম হলো গিট। আরো একটা ব্যাপার। ধরেন, আপনার ফিচার ইমপ্লিমেন্ট শেষ। রিলিজ দিলেন। ম্যানেজার বললো খুব সিরিয়াস একটা ইস্যু হয়েছে। কোন টাকা কাটা ছাড়ায় সিস্টেমে পেমেন্ট হয়ে যাচ্ছে। এখন কি করতে হবে? খুব তাড়াতাড়ি আগের অবস্থায় চলে যেতে হবে। এতদিন এর সব কোডের চেঞ্জ ম্যানুয়ালি চেঞ্জ করা জাস্ট ইম্পসিবল। এখানেই আপনাকে বাঁচানোর জন্য আছ গিট। ২ মিনিটে আগের ভার্সনে চলে যেতে পারবেন গিটের মাধ্যমে। এভাবেই অনেক ডেভেলপারের চাকরি বাঁচিয়ে রেখেছে গিট 😜

তারপর ধরেন আপনি কখনো আপনার সফটওয়্যার এ একা কাজ করবেন না। পুরো একটা টিম কাজ করবে। এখন আপনি একটা ফিচারে কাজ করছেন আর আপনার কলিগ আরেকটা ফিচারে। ২ জনের ই পেমেন্ট এর কোডে কিছু কিছু চেঞ্জ করতে হয়েছে। এখন পুরো প্রজেক্টে কার কোথায় চেঞ্জ করতে হয়েছে এগুলো কাজ শেষে ম্যানুয়ালি মেলাতে গেলে আরো একটা ফিচার ইমপ্লিমেন্টের সময় লেগে যাবে। মাল্টিপল ডেভেলপারের কাজ কে সহজে একসাথে করে কনফ্লিক্ট জায়গা গুলো ধরিয়ে দিয়ে নিশ্চিন্তে ফিচার রিলিজ দিয়ে ডেভেলপার দের তাড়াতাড়ি ঘুম এনে দেওয়ার দায়িত্ব টা ও নিয়ে নেয় গিট।

এরকম আরো অনেক ভাবে গিট ডেভেলপার দের লাইফ সহজ করে দিয়েছে। এগুলো বলে আর সময় নষ্ট করছি না। আপনার সাথে যদি আজ ই গিটের পরিচয় হয়ে থাকে তাহলে এতক্ষণে বুঝেই গেছেন যে, গিট না শিখে সফটওয়্যার ইঞ্জিনিয়ারিং এ পা দেওয়ার মানে হলো প্যারাসুট ছাড়া বিমান থেকে লাফ দেওয়ার মতো।

এবার হালকা করে গিটহাব সম্পর্কে জেনে নেওয়া যাক। গিট আর গিটহাব কাছাকাছি নাম হলে ও তাদের কাজ কিন্তু একই নয়। গিট হলো একটা সিস্টেম যে আপনার কোড কে ভার্সন আকারে আলাদা আলাদা ব্রাঞ্চে সেইভ করে রাখতে জানে। কিন্তু এত কোড সেইভ করে রাখবে কোথায়? আপনার পিসি তে? তাহলে আপনার কলিগ কাজ করবে কিভাবে? গুগল ড্রাইভে কোড দিবেন? তাহলে গিট কিভাবে ভার্সন ম্যানেজ করবে? তখন ই চলে আসে গিট এর মতো করে কোড সেইভ করে রাখতে জানে এমন একটা হোস্টিং প্রোভাইডার, যে ফ্রিতে আপনাকে কোড রাখতে দিবে। এমন ই একটা প্রোভাইডার হলো গিটহাব। এরকম আরো কয়েকটি হলোঃ গিটল্যাব, বিটবাকেট, SourceForge সহ আরো অনেক প্রোভাইডার।

সাধারণত গিটহাব সবচেয়ে বেশি জনপ্রিয়। এখানে একটি প্রজেক্ট এর কোড রাখতে হলে একটি রিপোজিটোরি খুলতে হয়। তারপর সেই রিপোজিটোরিতে কোড রাখতে হয় বা পুশ করতে হয়। কিভাবে সহজে গিটহাবে কোড পুশ করতে হয়, গিট ব্রাঞ্চ কি, কিভাবে কাজ করে, গিট কনফ্লিক্ট কি এগুলো জানতে হলে এখন ই গুগল বা ইউটিউব থেকে শিখে নিতে পারেন। আমার ও ইচ্ছা আছে সিম্পল এই জিনিস গুলো নিয়ে আরো কয়েকটি পর্ব করে লিখার।

আমার লেখার হাত কাঁচা। তাই, লেখা ভালো মানের না হওয়ার সাথে অনেক ভুল ত্রুটি ও থাকতে পারে। দয়া করে ক্ষমা সুন্দর দৃষ্টি তে দেখে ভুল ধরিয়ে দিলে খুশি হবো।

--

--

Roky Das

I am a self-taught programmer. I am now working as a Mobile App. Developer at Programming Hero. My core skill is MERN stack, Android (Kotlin), and Flutter.