gitHub ,gitLab এবং bitBucket কি?

gitHub ,gitLab এবং bitBucket কি?

GitLab vs GitHub vs bitbucket
GitLab vs GitHub vs bitbucket

gitHub ,gitLab এবং bitBucket হচ্ছে আমাদের গিট রিপজিটরি গুলোর বহুল জনপ্রিয় ওয়েব-ভিত্তিক হোস্টিং সার্ভিস গুলোর মধ্যে অন্যতম। এগুলোতে রয়েছে git tool এর সব সুবিধা সহ একটা ওয়েব-ভিত্তিক গ্রাফিক্যাল ইন্টারফেস এবং ডেক্সটপ আর মোবাইলের জন্য ক্লায়েন্ট। আরও সহজ করে বলতে গেলেঃ বন্ধু, সহকর্মী, সহপাঠী এমনকি পুরোপুরি অপরিচিত কাউকে আপনার কোড শেয়ার করার একটি উত্তম জায়গা হচ্ছে gitHub ,gitLab এবং bitBucket এর মতো সার্ভিস গুলো। তার মানে এই নয় যে আপনি যা কাজ করতেছেন এইসব হোস্টিং সার্ভিস ব্যবহার করলে অন্যরা আপনার সব কিছু জেনে যাবে। এখানে যেমন পাবলিক repository খোলা যায়। একই ভাবে আপনি আপনার কোডের গোপনীয়তা রক্ষার জন্য চাইলে প্রাইভেট (সামান্য অর্থের বিনিময়ে আনলিমিটেড অথবা সীমিত সংখ্যক ফ্রীতে ) repository খুলতে পারবেন। অনেক ওপেন সোর্স প্রোজেক্ট এইসব হোস্টিং (gitHub ,gitLab এবং bitBucket) সার্ভিস ব্যবহার করে তাদের বিশাল community নিয়ে কাজ চালিয়ে যাচ্ছে । যে কেউ পাবলিক repository এর কোড পড়তে পারে এর জন্য এগুলোতে কোন অ্যাকাউন্ট প্রয়োজন হয় না, এমনকি মাউসের একটি click এ সম্পূর্ণ repository নিজের পিসিতে ক্লোন করা যায়। এগুলোতে repository খোলার জন্য সাধারণত আপনার একটি অ্যাকাউন্ট লাগবে তারপর public অথবা (সামান্য টাকার বিনিময়ে আনলিমিটেড অথবা সীমিত সংখ্যক ফ্রীতে ) private repository খুলতে পারবেন। আপনি এইসব হোস্টিং সার্ভিসে অনেক প্রোজেক্টের কোড রাখতে পারেন । আপনি একটি রিপোজটরিতে আপনার একটি প্রোজেক্টের কোড রাখতে পারবেন । এইসব হোস্টিং সার্ভিসের অন্যতম সুবিধা হচ্ছে , এগুলোতে আপনার লেখা কোড সারাবিশ্বের যে কেউ দেখতে পারবে। যে কেউ চাইলে আপনার এপ্লিকেশনের সোর্সকোড ডেভেলাপ করতে পারবে। যেহেতু অনলাইন সংরক্ষন ব্যবস্থা তাই যে কোন জায়গা থেকে আপনি এক্সেস করতে পারবেন এবং কোড পরিবর্তনের জন্য কমিট করতে পারবেন।

Git Repository কে gitHub এর সাথে কানেক্ট করা :

এখন আমরা আমাদের তৈরি Git Repository কে আমাদের একটা gitHub একাউন্ট এর সাথে কানেক্ট করব। আর এর জন্য প্রথমে আপনার গিটহাবে একটা অ্যাকাউন্ট থাকতে হবে। আশা করি এই কাজটি আপনি নিজে নিজেই খুব সহজে করতে পারবেন।

একাউন্ট তৈরি হয়ে গেলে আপনাকে আপনার গিটহাবের অ্যাকাউন্ট এ লগিন করতে হবে। লগিনের পর উপরে ডান পাশে একটা প্লাস চিহ্ন দেখতে পাবেন। সেখানে ক্লিক করলে একটা মেনু ওপেন হবে এখানে New repository নামে লেখা দেখতে পাবেন। এখানে ক্লিক করলে আপনাকে নতুন রিপো তৈরী করার পেজে নিয়ে যাবে।

Create New Repository in gitHub
Create New Repository in gitHub

তারপর এখানে প্রথমে আপনার রিপোজটরির ownner এবং name দিবেন। মনে রাখতে হবে রিপোজিটরির নাম যেন ইউনিক এবং ইউ-আর-এল ফ্রেন্ডলি হয়। আর ডেস্ক্রিপশন ফিল্ড যেহেতু অপশনাল, চাইলে কিছু দিতেও পারেন আবার খালিও রাখতে পারেন। তবে খালি রাখার চেয়ে রিপোসিটোরি সম্পর্কে বিস্তারিত লেখাই উত্তম। এরপরের যে ফিল্ড আসবে সেখানে আপনি কি পাবলিক রিপোজটরি করবেন নাকি প্রাইভেট করবেন সেটা সিলেক্ট করে দিবেন। তবে আপনার ফ্রী অ্যাকাউন্ট হয়ে থাকলে শুধুমাত্র পাবলিক রিপোজটরি করার অ্যাক্সেস পাবেন। এখন বাকি ফিল্ডগুলা এভাবেই রেখে Create repository বাটনে ক্লিক করুন।

Create New Repository in gitHub to link git
Create New Repository in gitHub to link git

এখন Create Repository বাটনে ক্লিক করার সাথে সাথে আপনার গিটহাবে নতুন রিপোজটরি তৈরি হয়ে যাবে।

এখন আমরা আমাদের অলরেডি তৈরি গিট রিপোজটরি এর সাথে কিভাবে আমাদের তৈরি গিটহাবের সাথে কানেক্ট করা বা সেখানে Repository push করা যায় সেটা দেখব ।

গিটহাবে পুশ করাঃ

গিটহাবে পুশ করার আগে আমাদের কে কিছু বিষয় নিশ্চিত হতে হয়। অর্থাৎ আপনাকে নিশ্চিত হতে হবে আপনার সবকিছু কমিট করা আছে কিনা। সাথে এটাও চেক করতে হবে আপনি মাস্টার ব্রাঞ্চে আছেন কিনা? এটা git status কমান্ড দিয়ে খুব সহজেই চেক করতে পারেন।

সবকিছু ঠিকঠাক থাকলে এখন আপনাকে আপনার gitHub এ তৈরি নতুন repository কে নিচের মতো clone করতে হবে।

github git clone
github git clone

clone করা হয়ে গেলে আপনাকে remote origin অ্যাড করতে হবে এভাবেঃ

git remote add origin https://github.com/w3programmers/git-learn.git
git remote add origin
git remote add origin

এটা মূলত আপনার গিটহাবে ক্রিয়েট করা প্রোজেক্টের লোকেশন টা সেট করে রাখবে । এবং এটা আপনার প্রোজেক্টে শুধু একবারই অ্যাড করতে হবে, পরের বার পুশ করার সময় আর লাগবে না। অর্থাৎ পরেরবার থেকে সে মনে রাখবে। তখন শুধু পুশ করলেই হবে। এখন প্রোজেক্ট পুশ করতে চাইলে নিচের পুশ কমান্ডটি দিতে হবে:

git push origin master

অথবা কোনো স্পেসিফিক branch push করতে চাইলে master এর জায়গায় ব্রাঞ্চের নাম দিতে হবে। যেমন আমাদের showTable branch এর জন্য পুশ কমান্ডটি হবে নিচের মতো :

git push origin showTable

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

গিটহাব থেকে পুল করাঃ

gitHub থেকে আপনাকে অনেক কারণে project pull করতে হতে পারে, অনেক সময় আপনার লোকাল পিসিতে প্রজেক্টটি নাই , কিন্তু পূর্বে gitHub এ পুশ করে রেখেছিলেন। আবার হতে পারে আপনার একটা প্রজেক্ট এ অন্য কোনো Collaborator বা কোনো টীম মেম্বার আপনার প্রোজেক্টে নতুন কোনো কাজ করে সেটা পুশ করে রেখেছে। এখন অটোম্যাটিক্যালিই কিন্তু সেই কাজের আপডেট গিটহাব থেকে আপনার লোকাল ম্যাশিনে চলে আসবে না। সেজন্যে আপনাকে সেটা পুল করতে হবে গিটহাব থেকে এভাবেঃ

git pull origin master

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

গিটহাব থেকে প্রোজেক্ট ক্লোন করাঃ

অনেক সময় গিটহাবে থাকা যে কোনো প্রজেক্টে কে আমাদের লোকাল মেশিনে বসে কাজ করতে হয়। তখন সেই প্রজেক্ট এর একটা ক্লোন কপি আমাদের লোকাল পিসিতে নামিয়ে আনতে হয়। আপনি চাইলে গিটহাবের যে কোনো পাবলিক প্রোজেক্টই এইরকম ক্লোন করতে পারেন । এই জন্যে প্রথমে আপনি যেই প্রজেক্ট ক্লোন করবেন তার ক্লোন এর লিঙ্ক খুজতে হবে। আর ক্লোন করার লিঙ্ক আপনি গিটহাবের যেকোনো প্রোজেক্টের পাতায় গিয়ে প্রোজেক্ট ফাইল লিস্টিং এর ডান দিকের উপরের কোণায় পাবেন Clone or download নামের বাটনে।

github clone project
github clone project

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

git clone <GitHub Repo URL> <Local Directory Name(optional)>

এখানে প্রথমে আপনাকে git clone তারপরে গিটহাবের রিপোজটরির লিঙ্ক। তারপর আপনি চাইলে আপনার লোকাল মেশিনে প্রোজেক্টটা কোন ডিরেক্টরির ভিতরে রাখতে চাচ্ছেন সেটার নামও দিতে পারবেন। লোকাল ডিরেক্টরির নাম দেওয়াটা অপশনাল, না দিলে বাই ডিফল্ট রিপোজটরির যে নাম সে নামের ডিরেক্টরিতেই ক্লোন হবে। ধরি, আমরা opensourcepos এই প্রোজেক্টটা ক্লোন করবো। তাই কমান্ড লাইন ওপেন করে নিচের কমান্ডটি লিখবোঃ

git clone https://github.com/opensourcepos/opensourcepos.git
opensourcepos clone from git
opensourcepos clone from git

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

অন্যের প্রোজেক্টে Pull REQUEST তৈরী করাঃ

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

github fork
github fork

Fork হয়ে যাওয়ার পর, এখন আপনি নিজের একাউন্ট থেকে clone করে এটাতে কাজ করতে পারবেন।

আমি মাসুদ আলম, বাংলাদেশের ৩৬ তম Zend Certified Engineer । ২০০৯ সালে কম্পিউটার সাইন্স থেকে বেচেলর ডিগ্রী অর্জন করি। দীর্ঘ ১৫ বছর আমি Winux Soft, SSL Wireless, IBCS-PRIMAX, Max Group, Canadian International Development Agency (CIDA), Care Bangladesh, World Vision, Hellen Keller, Amarbebsha Ltd সহ বিভিন্ন দেশি বিদেশী কোম্পানিতে ডেটা সাইন্স, মেশিন লার্নিং, বিগ ডেটা, ওয়েব ডেভেলপমেন্ট এবং সফটওয়্যার ডেভেলপমেন্ট এর উপর বিভিন্ন লিডিং পজিশন এ চাকরি এবং প্রজেক্ট লিড করি। এছাড়াও বাংলাদেশের ১৮৫ জন জেন্ড সার্টিফাইড ইঞ্জিনিয়ার এর মধ্যে ১২০ এরও অধিক ছাত্র আমার হাতে জেন্ড সার্টিফাইড ইঞ্জিনিয়ার হয়েছেন। বর্তমানে w3programmers ট্রেনিং ইনস্টিটিউট এ PHP এর উপর Professional এবং Advance Zend Certified PHP -8.2 Engineering, Laravel Mastering Course with ReactJS, Python Beginning To Advance with Blockchain, Machine Learning and Data Science, Professional WordPress Plugin Development Beginning to Advance কোর্স করাই। আর অবসর সময়ে w3programmers.com এ ওয়েব টেকনোলজি নিয়ে লেখালেখি করি।

Leave a Reply