You are on page 1of 28

বাংলায়

িগট ভাসন কে ািলং

সূিচপ
র আেগ 0
ভূিমকা 1
ই টেলশন এবং কনিফগােরশন 2
নতুন িরেপািজটির 3
িরেমাট িরেপািজটির 4
মাি পল ডেভলপার 5
একািধক িরেমাট িরেপা 6
িগট- ও পিরিচিত 7
িগট- ও ই টেলশন এবং কনিফগােরশন 7.1
িগট- ওিফচার 7.2
িগট- ও িরিলস 7.3
িগট- ও হটিফ 7.4

1
বাংলায় িগট ভাসন কে ািলং

howtocode.com.bd
পৃ া লাইক ক ন 10হাজার পছ িল

আপনার ব ু েদর মেধ আপিনই এটা থম পছ ক ন

কাস এর মুল পাতা | HowToCode মুল সাইট | সবার জন া ািমং গ | িপিডএফ ডাউনেলাড

ভাসন কে াল িসে ম – িগট (git)


theazharul 18 howtocode-com-bd 11 masudiiuc 11 nuhil 8

ভাসন কে াল (Version Control) : ভাসন কে াল হে এমন একিট প িত যা আপনার েজে র(project)


িবিভ সমেয়র পিরবতন েলা সংর ণ কের রােখ। ভাসন কে াল িসে েমর মাধ েম আপিন আপনার েজে র
পূেবর য কান সমেয়র ি তীশীল অব ায় িফের যেত পারেবন।

িগট(git): িগট হে একিট ওেপনেসাস(open source) ভাসন কে াল িসে ম। এর মাধ েম একজন ব বহারকারী
যতবার তার পিরবতন েলা কিমট(commit) করেব ততবার িগট তার স ূণ ফাইল সংর ন কের রাখেব। িগট এর
একিট বড় সুিবধা হে একিট েজ িনেয় অসংখ ডেভলপার(developer) একই সময় কাজ করেত পাের।
আপিন চাইেল ই ারেনট সংেযাগ ছাড়াও কাজ করেত পারেবন।

ওেপন সাস
এই বইিট মূলত া েম লখা এবং বইিট স ূন ওেপন সাস । এখােন তাই আপিনও অবদান রাখেত পােরন
লখক িহেসেব । আপনার কি িবউশান গৃ হীত হেল অবদানকারীেদর তািলকায় আপনার নাম যাগ কের দওয়া হেব ।

এিট মূলত একিট িগটহাব িরেপািজেটাির যখােন এই বইেয়র আিটেকল েলা মাকডাউন ফরম ােট লখা হে ।
িরেপাজটিরিট ফক কের পুল িরকুেয় পাঠােনার মাধ েম আপনারাও অবদান রাখেত পােরন ।

Like 90 Share

This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives


4.0 International License.

র আেগ 2
বাংলায় িগট ভাসন কে ািলং

র আেগ 3
বাংলায় িগট ভাসন কে ািলং

ভাসন কে াল িসে ম – িগট (git)


ভাসন কে াল (Version Control) :
ভাসন কে াল হে এমন একিট প িত যা আপনার েজে র(project) িবিভ সমেয়র পিরবতন েলা সংর ণ কের
রােখ। ভাসন কে াল িসে েমর মাধ েম আপিন আপনার েজে র পূেবর য কান সমেয়র ি তীশীল অব ায় িফের
যেত পারেবন।

িগট(git):
িগট হে একিট ওেপনেসাস(open source) ভাসন কে াল িসে ম। এর মাধ েম একজন ব বহারকারী যতবার তার
পিরবতন েলা কিমট(commit) করেব ততবার িগট তার স ূণ ফাইল সংর ন কের রাখেব। িগট এর একিট বড়
সুিবধা হে একিট েজ িনেয় অসংখ ডেভলপার(developer) একই সময় কাজ করেত পাের। আপিন চাইেল
ই ারেনট সংেযাগ ছাড়াও কাজ করেত পারেবন।

আসুন দেখ নই িগট এর ব ল ব ব ত কমা েলা(command)-

git init -একিট নতুন িরেপািজটির(repository) তির করার জন ।


git clone – পূব থেক িবদ মান কান িরেপািজটিরর স ূণ তথ ডাউনেলাড করার জন
git commit – অফলাইন(offline) িরেপািজটিরেত ায়ীভােব কাজ সংযু করার জন
git pull – িরেমাট(remote) িরেপািজটির থেক ফাইল ডাউনেলাড কের অফলাইন িরেপািজটিরর সােথ
merge করার জন
git push – অফলাইন িরেপািজটির থেক ফাইল িরেমাট িরেপািজটিরেত আপেলাড করার জন

কােজর ধাপসমূহ:

আমরা যখন লাকাল(local) িরেপািজটিরেত কান পিরবতন কির তখন আমরা working directory- ত থািক। git
add কমা দয়ার পর সটা staging area ত যায় এবং git commit কমা দয়ার পর সটা ািয়ভােব লাকাল
িরেপািজটিরেত যু হয়। পরবিতেত চাইেল সটা িরেমাট িরেপািজটিরেত git push কমা িদেয় আপেলাড কের দয়া
যায়।

ভূিমকা 4
বাংলায় িগট ভাসন কে ািলং

ভূিমকা 5
বাংলায় িগট ভাসন কে ািলং

িগট : ই টল ও কনিফগার করা


িগট িনেয় কাজ করার জন আপনার কি উটারেক িগট ব বহার উপেযাগী কের িনেত হেব। সজন আপনার
কি উটাের িগট ই টল(install) করেত হেব। চলুন দেখ নয়া যাক, িকভােব িগট ই টল এবং
কনিফগার(configure) কের িনেত হয়।

Windows:
১. িগট প ােকজিট ডাউনেলাড করার জন এখােন ি ক ক ন।
২. ডাউনেলাড করা ফাইলিট ি ক কের ই টল কের িনন।

Linux:
Linux এর িবিভ িডে া এর জন িগট ই টল প িত িবিভ রকম। িক খুবই সহজ। িডে া অনুযায়ী terminal-এ
িনেচর কমা েলা িলখুন।

Debian/Ubuntu

# apt-get install git

Fedora

# yum install git

Gentoo

# emerge --ask --verbose dev-vcs/git

Arch Linux

# pacman -S git

FreeBSD

$ cd /usr/ports/devel/git

$make install

Solaris 11 Express

ই টেলশন এবং কনিফগােরশন 6


বাংলায় িগট ভাসন কে ািলং

$ pkg install developer/versioning/git

OpenBSD

$ pkg_add git

িগট কনিফগার
িগট কনিফগার করার মূল উে শ হে , আপিন যখন িগট এর মাধ েম কিমট(commit) করেবন তখন কিমেটর সােথ
স আপনার তথ সংর ণ কের রাখেব। কনিফগােরশেনর সময় আপনােক ধু আপনার user name এবং email
address বেল িদেত হেব। Windows ব বহারকারীরা িগট ই টল করার পর কি উটার ড টেপ gitBash নােম
একিট শটকাট ফাইল তির হেব। সিট খুেল তােত িনেচর কমা েলা িলখুন। Linux ব বহারকারীরা terminal-এ
কমা েলা িলখেত পারেবন।

git config --global user.name "Your Name Here"

Your Name Here এর জায়গায় আপনার নাম িলখুন।

git config --global user.email "your_email@youremail.com"

এখােন য email address িদেবন তা অবশ ই আপনার সাভার অ াকাউে র email address এর সােথ িমল
থাকেত হেব। এখন আপনার কি উটারিট িগট ব বহার উপেযািগ হেয়েছ। এখন থেক আপিন আপনার কি উটাের
িগেটর কমা েলা কােজ লাগােত পারেবন। আমরা আমােদর সকল কমা gitBash অথবা terminal-এ িলখেবা।

~/.gitconfig ফাইল এ আপনার াবাল(global) কনিফগােরশন লখা থােক। আপিন যখন কান একিট
িরেপািজটিরেত git init কমা িদেবন তখন .git নােমর একিট ফা ার তির হেব। এই .git ফা ােরর
িভতেরই িগট সব তথ সংরি ত রােখ।

আপিন কান একিট িরপিজটিরর জন িগেটর াবাল কনিফগােরশনেক পিরবতন অথবা ওভাররাইট করেত পােরন।
আপিন যিদ কান একিট িরপিজটিরর জন name এবং email পিরবতন করেত চান তাহেল terminal িদেয়
িরপিজটিরেত িগেয় িনেচর কমা েলা দন।

git config --local user.name "Your Name Here"


git config --local user.email "your_email@youremail.com"

এখেন আপিন য ÆÚÌ এবং ¦áÌ¦Ñ িদেবন তা শধুমা এই িরেপািজটিরর জন কনিফগার হেব। আপনার লাকাল
কনিফগার .git/config ফাইল এ সংরি ত হয়। Linux/Mac ব বহারকারীরা terminal-এ িনেচর কমা িদেয়
লাকাল কনিফগােরশন এর ফাইলিট দখেত পােরন।

nano .git/config

ই টেলশন এবং কনিফগােরশন 7


বাংলায় িগট ভাসন কে ািলং

ফাইল এর শেষ যিদ িনেচর লাইন েলা যাগ হয় তাহেল আপনার লাকাল কনিফগার সিঠকভােব overwrite হেয়েছ।

[user]
name = <your-name>
email = <your-email>

আপিন িনেচর কমা িদেয় আপনার িগট কনিফগােরশন একসােথ দখেত পারেবন।

git config --list

ই টেলশন এবং কনিফগােরশন 8


বাংলায় িগট ভাসন কে ািলং

িগট : নতু ন অফলাইন িরেপািজটির িনেয় কাজ করা


অফলাইেন িগট িরেপািজটির ব বহার করার জন িনেচর ধাপ েলা অনুসরন ক ন

1. ধ ন, আপিন যিদ একিট routine management system তির করেত চান এবং আপনার িরেপািজটির
ফা ােরর নাম যিদ rms িদেত চান , থেম

​ mkdir rms

কমা িট িলখুন। এখন cd ব বহার কের আপনার িরেপািজটিরেত েবশ করেত িলখুন

​ cd rms

2. এখন
git init

কমা িলখুন। এেত কের আপনার িরেপািজটিরিট িগট ব বহােরর উপেযািগ হেব এবং .git নােম একিট লুকােনা
ফা ার তির হেব। আপনার িরেপািজটিরেত .git ফা ারিট তির না থাকেল আপিন িগেটর কমা েলা
কােজ লাগােত পারেবন না।

3. আপনার িরেপািজটিরিট এখন কােজর উপযু হেয়েছ। আপিন এখন এেত য কান ধরেন ফাইল, ফা ার
তির, স াদনা ও মুেছ ফলেত পারেবন।

4. আপনার িরেপািজটির েত কবার ি িতশীল(stable) অব ায় পৗছেল স েলা Staging Area ত পাঠােত


হেব। Staging area ত পাঠােনার মােন হে আপিন য য ফাইল েলােক িনি তভােব িরেপািজটিরেত
অ ভু করেবন তার তািলকা তির করা। স জন আপনােক git add কমা ব বহার করেত হেব। যিদ
আপিন বতমান সব েলা ফাইলেক Staging area ত সংযু করেত চান তেব আপনােক
git add *

কমা ব বহার করেত হেব। যিদ একিট ফাইেক সংযু করেত চান তেব git add কমাে র পর ফাইেলর নাম
িলখেত হেব। ধ ন আপিন test.txt নােম একিট ফাইল তির কেরেছন যা আপিন Staging area ত পাঠােত
চান। তখন আপনার কমা হেব

git add test.txt

5. সবেশষ আপনােক য কাজিট করেত হেব তা হে , আপনার staging area ত সংযু করা ফাইল েলােক
মূল িরেপািজটিরর সােথ িন তভােব সংযু করা। স জন আপনােক git commit কমা িট ব বহার করেত
হেব। আপনােক েত ক commit এর সােথ একিট বাতা সংযু কের িদেত হেব। তখন আপনার স ূণ
কমা িট হেব-

git commit -a -m "Your Message"

এখােন "Your Message" এর যায়গায় অাপিন অাপনার ইে মত যেকান ট ট িদেত পােরন।

নতুন িরেপািজটির 9
বাংলায় িগট ভাসন কে ািলং

নতুন িরেপািজটির 10
বাংলায় িগট ভাসন কে ািলং

িগট : িবদ মান িরেমাট িরেপািজটির িনেয় কাজ করা


অনলাইেন িগট িরেপািজটির সংর ণ কের রাখার জন িকছু সাভার রেয়েছ। যােদর মেধ GitHub, BitBucket,
GitLab অন তম। এই সব সাভাের সংরি ত িরেপািজটির েলােক িরেমাট িরেপািজটির বলা হয়। আপিন
সাইট েলােত েবশ কের আপনার িনজ িরেপািজটির তির করেত পারেবন। একিট িরেমাট িরেপািজটির তির
করার পর আপনােক সাধারণত আপনার লাকাল কি উটার থেকই স েলােক স াদনা করেত হেব। স াদনা
শেষ আবার িরেমাট িরেপািজটিরেত আপেলাড কের িদেত হেব। চলুন দখা যাক, িগট ব বহার কের িকভােব আমরা
একিট িরেমাট িরেপািজটিরেক স াদনা করেত পাির।

(আমরা এখােন bitbucket ও ওেয়ব ডেভলপেম এর িরেপািজটির িনেয় আেলাচনা করেবা)

1. থেমই আপনার িরেমাট িরেপািজটিরিটেক আপনার িনজ কি উটাের িনেয় আসেত হেব। এজন আপনােক
cd কমা ব বহার কের আপনার কি উটােরর localhost এ যেত হেব। localhost এর জন আপনােক
htdocs অথবা www ফা াের েবশ করেত হেব।

2. াউজােরর মাধ েম আপনার িরেমাট িরেপািজটিরেত েবশ ক ন। সখােন clone বাটেন ি ক করার পর
সখােন একিট কমা দখেত পােবন। clone কমাে র দুইিট অপশন থােক। একিট হে https এবং অন িট
ssh। ssh কমা িনবাচন করেল আপনার কি উটাের একিট ssh key তির করেত হেব। পের সিট
আপনার সাভাের সংর ন করেত হেব। িক https িনবাচন করেল কান key তির করেত হেব না। চলুন দেখ
নয়া যাক, িকভােব ssh key তির করেত হয়-

terminal এ ssh-keygen কমা িট িলখুন। এেত কের আপনার কি উটােরর home ফা াের
লুকােনা একিট .ssh ফা ার তির হেব এবং একিট id_rsa.pub ফাইল তির হেব। id_rsa.pub
ফাইলিট খুলুন এবং এর িভতেরর লখা েলা copy ক ন।

আপনার সাভার account এ েবশ ক ন। সখান থেক manage account িলংেক(link) েবশ
ক ন। এরপর সখান থেক ssh key িলংেক েবশ কের আপনার key িট paste ক ন। এরপর
সংর ন কের বর হেয় আসুন।

3. সাভার একাউ (account) থেক clone কমা িট copy কের terminal এ paste ক ন।

4. আপনার clone কমা িট যিদ https এর হয় তাহেল আপনার কােছ আপনার একাউ এর user name এবং
password চাইেব। সিঠক তথ িদেল আপনার সাভােরর িরেপািজটিরিট আপনার িনজ কি উটাের
ান(clone) হেয় যােব। আপনার localhost এ েবশ করেল সাভােরর িরেপািজটিরর নােম একিট ফা ার
দখেবন। এটাই আপনার িনজ কি উটাের িরেমাট িরেপািজটিরর ান।

5. এখন অফলাইেন থেকই আপনার িরেপািজটিরেত কাজ ক ন। এরপর আপিন যখিন আপনার িরেমাট
িরেপািজটিরেত আপনার কাড(code) সংযু করেত চাইেবন তখন আপনােক িকছু কমা ব বহার করেত
হেব। স েলা িনেচ দয়া হেলা।

আপনার িরেপািজটির েত কবার ি িতশীল(stable) অব ায় পৗছেল স েলা Staging Area ত


পাঠােত হেব। Staging area ত পাঠােনার মােন হে আপিন য য ফাইল েলােক িনি তভােব

িরেমাট িরেপািজটির 11
বাংলায় িগট ভাসন কে ািলং

িরেপািজটিরেত অ ভু করেবন তার তািলকা তির করা। স জন আপনােক git add কমা ব বহার
করেত হেব। যিদ আপিন বতমান সব েলা ফাইলেক Staging area ত সংযু করেত চান তেব
আপনােক
git add *

কমা ব বহার করেত হেব। যিদ একিট ফাইেক সংযু করেত চান তেব git add কমাে র পর ফাইেলর নাম
িলখেত হেব। ধ ন আপিন test.txt নােম একিট ফাইল তির কেরেছন যা আপিন Staging area ত পাঠােত
চান। তখন আপনার কমা হেব
git add test.txt

আপনার staging area ত সংযু করা ফাইল েলােক মূল িরেপািজটিরর সােথ িন তভােব সংযু
করা। স জন আপনােক git commit কমা িট ব বহার করেত হেব। আপনােক েত ক commit এর
সােথ একিট বাতা সংযু কের িদেত হেব। তখন আপনার স ূণ কমা িট হেব-
git commit -m “Your Message”

এখন কিমট(commit) করা ফাইল েলােক িরেমাট িরেপািজটিরেত সংযু করেত আপনােক git push
কমা িট ব বহার করেত হেব। আপিন কান া (branch (branch স েক অন িটউটিরয়ােল
আেলাচনা করা হেব))-এ ফাইল সংযু তাও বেল িদেত হেব। আমরা আমােদর ফাইল master branch
এ সংযু করেবা। স ূণ কমা িট িনেচ দয়া হেলা।
git push origin master

এখােন origin হে িরেমাট িরেপািজটিরর নাম। য িরেমাট িরেপািজটির থেক ফাইল ান করা হয় তার নাম
সাধারণত origin দয়া থােক।

িরেমাট িরেপািজটির 12
বাংলায় িগট ভাসন কে ািলং

িগট : একই িরেপািজটিরেত একািধক ডেভলপার


সাধারণত আমরা যখন কান েজ বা িরেপািজটির িনেয় একিট িটেম(team) কাজ কির তখন েজ ব ব াপনাটা
একটু জিটল হেয় যায়। িবেশষ কের একই ফাইেল একািধক ডেভলপার কাজ করা। এই সমস ার সমাধােনর জন
িগট য প িত ব বহার কেরেছ তা এক কথায় অসাধারণ। কান কাজ অথবা কাড না হািরেয়ই একই ফাইেল কাজ
করেত পারেবন অসংখ ডেভলপার। একিট িরেপািজটির িনেয় অসংখ ডেভলপার িবি ভােব কাজ করেলও
সবাই সংযু থাকেত পারেবন িগট এর মাধ েম। কথাটা নেত খাপছাড়া মেন হেলও এটাই সিত । তাহেল দির না
কের চলুন দখা যাক িকভােব একই িরেপািজটিরেত অসংখ ডেভলপার কাজ করেত পারেবন। আমরা এখােন য
প িত িনেয় আেলাচনা করেবা তা অিধকাংশ ওেপনেসাস(opensource) িরেপািজটিরেত ব বহার করা হয়।

থেমই আমােদরেক এমন একিট িরেমাট িরেপািজটির তির করেত হেব যা ক ীয় িরেপািজটির িহেসেব ব বহার
করা হেব। আপিন যিদ িবনামূেল github(একিট িগট িরেপািজটির সাভার) ব বহার কেরন তাহেল য কউ
আপনার িরেপািজটিরেত read access পােব। িক bitbucket ব বহার করেল আপিন যিদ িরেপািজটির
public না কের দন তাহেল কউ দখেত পােব না। চাইেল আপিন private িরেপািজটিরেতও আপনার
পছ নীয় ব ি েক read, write অথবা admin access িদেত পারেবন। তাই আপিন য সকল ডেভলপারেক
আপনার িরেপািজটিরেত সংযু করেবন তােদরেক read access িদন।
ফাক(fork): admin ব িতত য সকল ডেভলপার একই িরেপািজটিরেত কাজ করেবন তােদরেক ক ীয় বা
মূল িরেপািজটিরেত Fork করেত হেব। ফাক মােন হে ডেভলপােরর সাভার একাউে (account) মূল
িরেপািজটিরর মত একিট ত িরেপািজটির তির করা। ফাক করার পর ডেভলপার য িরেপািজটির তির
করেবন তা একা ই তার িনজ । এেত মূল িরেপািজটিরর সােথ দৃশ ত কান স ক থাকেব না। পরবতীেত
আমরা চাইেল মূল িরেপািজটিরর সােথ সংেযাগ িদেত পারেবা। একিট িরেপািজটির ফাক করা খুবই সহজ-

ক ীয় িরেপািজটিরেত েবশ ক ন – Fork বাটেন(button) ি ক ক ন – েয়াজনীয় তথ পূরণ কের


submit ক ন ডেভলপার এখন একিট িনজ িরেপািজটিরর মািলক। :)
এখন ডেভলপার তার িনজ িরেপািজটিরেত নতুন য কান feature িনেয় কাজ করেত পারেবন। করেত
পারেবন য কান ধরেনর স াদনা। কাজেতা হেলা িক এবার এত পির েমর কাজ িকভােব মূল
িরেপািজটিরর সােথ সংযু করেবা? খুবই সহজ–
Compare: কান কান িরেমাট িরেপািজটির সাভাের আপনার করা কাজেক compare করার সুেযাগ
রাখা হেয়েছ। চাইেল আপিন দেখ িনেত পােরন মূল িরেপািজটিরর সােথ আপিন িক সংেযাজন-িবেয়াজন
কেরেছন। compare করার জন ডেভলপার তার িরেপািজটির পাতায় compare বাটেন ি ক ক ন।
দেখ িনন আপনার কােজর বণনা।
Pull Request: আপনার কাজ েলা মূল িরেপািজটিরেত অ ভু করার জন মূল িরেপািজটিরেত
একিট Pull Request পাঠােত হেব। এেত কের মূল িরেপািজটিরেত ডেভলপােরর কাজ সংযু
করার জন একিট বাতা রণ করা হেব। admin চাইেল ডেভলপােরর কাজ হন অথবা বািতল
করেত পারেবন। ডেভলপার ধু তার কাজ হন করা হেয়েছ িক বািতল করা হেয়েছ এই মেম
একিট বাতা পােবন। Pull Request পাঠােনার জন ডেভলপার তার িরেপািজটির পাতায় pull
request বাটেন ি ক ক ন।

মাি পল ডেভলপার 13
বাংলায় িগট ভাসন কে ািলং

এখন এডিমন তার মূল িরেপািজটিরেত একিট নতুন Pull Request পােবন। কাজ পযেব েণর পর তা হন
করার মত হেল মূল িরেপািজটিরর সােথ Merge কের নেবন। উপেরর য ধাপ েলা বণনা করা হেয়েছ স েলা
স ূণ সাভারিভি ক। আপিন চাইেল সাভােরর ওেয়ব সাইেট েবশ না কের িগট কমা এর মাধ েম সরাসির
আপনার িনজ কি উটার থেক ডেভলপারেদর কাজ পযেব ণ করেত পারেবন। সজন আপনােক জানেত
হেব িকভােব আপিন একািধক িরেমাট িরেপািজটিরর সােথ সংযু হেবন। আমরা আগামী িটউটিরয়ােল এ িবষেয়
আেলাচনা করেবা, ইনশাআ াহ।

মাি পল ডেভলপার 14
বাংলায় িগট ভাসন কে ািলং

িগট : একািধক িরেমাট িরেপািজটিরর সােথ সংেযাগ


একই িরেপািজটিরেত একািধক ডেভলপার কাজ করেল একজন ডেভলপার অন একজন ডেভলপােরর কাজ
pull করার েয়াজন হেত পাের। এছাড়াও admin যখন কান ডেভলপােরর কাজ পযেব ণ করেবন তখন ঐ
ডেভলপােরর িরেপািজটিরর সােথ admin এর িরেপািজটিরর সংেযাগ িদেত হেব। চলুন দেখ নয়া যাক িকভােব
িরেমাট িরেপািজটিরর সােথ সংেযাগ দয়া যায়। িরেমাট িরেপািজটিরর সােথ সংেযাগ দয়ার জন আমােদরেক git
remote কমা িট ব বহার করেত হেব। স ূণ কমা িট িনেচ দয়া হেলা-

$ git remote add <name> <remote-repo-url>

এখােন name এর জায়গায় আপিন িরেমাট িরেপািজটিরিটেক য নােম ডাকেত চান স নাম হেব। remote-repo-
url এর জায়গায় িরেমাট িরেপািজটিরিটর HTTPS/SSH clone address িদেত হেব। ধ ন আমরা একিট ক ীয়
িরেপািজটির তির করলাম যার নাম হে rms এবং িরেপািজটিরিটর HTTPS clone address হে
https://bitbucket.org/precursortechnology/rms.git । এখন এেত যতজন ডেভলপার কাজ করেব সবাই
এই িরেপািজটিরিট fork করেত হেব। এখন ডেভলপাররা যিদ তােদর িরেপািজটিরেক ক ীয় িরেপািজটিরর
(https://bitbucket.org/precursortechnology/rms.git) সােথ সংেযাগ িদেত চান তাহেল তােদরেক িলখেত
হেব

$ git remote add upstream https://bitbucket.org/precursortechnology/rms.git

এখােন আমরা ক ীয় িরেপািজটিরেক চনার জন upstream নাম ব বহার কেরিছ। আপিন চাইেল অন য কান
নাম ব বহার করেত পােরন। এখন িনি ত হওয়ার জন upstream এর মান দখেত পােরন।

$ git remote show upstream

একিট িরেপািজটির চাইেল একািধক িরেমাট িরেপািজটিরর সােথ সংযু হেত পারেব। সব েলা remote এর মান
একসােথ দখার কমা -

$ git remote -v

এখন কান ডেভলপার যিদ ক ীয় িরেপািজটিরর ( upstream ) তথ pull করেত চান তাহেল তােক িলখেত হেব -

$ git pull upstream master

pull করা মােন হে ঐ িরেপািজটিরর সবেশষ তথ েলা আপনার িরেপািজটিরর সােথ একীভূত কের নয়া। pull
কমা িদেয় মূলত দুিট কাজ করা হয়। থেম িরেমাট িরেপািজটিরিটর তথ েলা fetch কের নয়া হয় এবং পের
স েলা লাকাল িরেপািজটিরর সােথ merge করা হয়। উপেরর কমা িদেয় আমরা upstream নামক িরেমাট

একািধক িরেমাট িরেপা 15


বাংলায় িগট ভাসন কে ািলং

িরেপািজটিরর master branch এর সব তথ েলা/commits লাকাল repository এর বতমান া এ merge


কের িনলাম।

এখন আপনার িনেজর িরেপািজটির (origin) ত upstream এর সব তথ েলা পাঠােত হেল িলখেত হেব -

$ git push origin HEAD # ¬´ÚáÆ HEAD = Ê ÌÚÆ áÑÚ³ÚÑ Ú ¬Ï ÆÚÌ।

যেকান িরেমাট remove করার কমা git remote rm <remote-name> . সুতরাং, upstream িরেমাট
remove করেত হেল কমা হেব -

$ git remote rm upstream

কান িরেমাট rename করার কমা git remote rename <present-name> <new-name> . সুতরাং,
upstream িরেমাট ক origin2 করেত হেল কমা হেব -

$ git remote rename upstream origin2

একািধক িরেমাট িরেপা 16


বাংলায় িগট ভাসন কে ািলং

িগট- ও পিরিচিত(Git-flow introduction)


িগট- ও আসেল একটা শাখা(branching) মেডল, যটা Vincent Driessen নােমর একজন লাক সব থম
বািনেয়েছন। এটা মলুত িগেটর উপর িনভর কের বানােনা হেয়েছ। এর সবেচেয় বড় সুিবধা হল একািধক ডেভলপার
একসােথ একটা বড় ােজ িনেভজাল ভােব কাজ করেত পাের।

িক , িগট- ও িনেয় কাজ করেত হেল আেগ, িগেটর উপর ভাল দখল থাকেত হেব। িগেটর শাখা (branching)
িকভােব কাজ কের সটা ভাল কের জানেত হেব। আর এই ে , কমা লাইেন (command line) এ কাজ করা
সবার আেগ আবশ ক।

িগট- ও পিরিচিত 17
বাংলায় িগট ভাসন কে ািলং

িগট- ও ই টেলশন এবং কনিফগােরশন


িগট- ও ই টেলশন

ডিবয়ান িনভরশীল িলনা িসে েম িগট- ও ( git-flow ) ই টল করার জন িনেছর কমা িট রান ক ন
$ sudo apt-get install git-flow

ফডরা িনভরশীল িলনা িসে েম িগট- ও ( git-flow ) ই টল করার জন িনেছর কমা িট রান ক ন

$ yum install gitflow

অ াপল িনভরশীল ম াক িসে েম িগট- ও ই টল করার জন িনেছর কমা রান ক ন


$ brew install git-flow

উইে াজ িসে েম িগট- ও ই টল করার জন সবার আেগ cygwin ই টল ক ন। এটা একটা উইে াজ
িসে েম, িলনা এনভায়েরােম তির কের। এরপর িনেছর কমা েলা রান ক নঃ
$ wget -q -O - --no-check-certificate
https://github.com/nvie/gitflow/raw/develop/contrib/gitflow-installer.sh | bash

যিদ এরপর git-flow init রান করার পর কউ "flags: FATAL unable to determine getopt
version" এই error দকেত পায়, তাহেল util-linux package ই টল করেত হেব Cygwin িদেয়।

আর িব ািরত জানেত উ িলে ি ক ক নঃ উইে াজ িসে েম ই টল িগট- ও

িগট- ও কনিফগার

িগট- ও কনিফগােরশন করার জন সবার আেগ একটা িগট িরেপািজটির থাকেত হেব। আমরা যখন কান একটা
ােজে git init কির, থাকন সম কাজ েলা একটা িডফ শাখা "ÌÚ ½ÚÏ(master)" এ জমা হেত থােক।

িবর লাগেছ... চলুন আমরা এবার িনেজ কিরঃ

১। আেগ আমরা একটা ফা ার বানাবঃ

mkdir git-flow-test

২। এবার আিম একটা ফাইল বানাব git-flow-test ফা াের ডুেক।


cd git-flow-test

touch helloworld.txt

৩। এবার আমরা সবার আেগ এখােন িগট (git) রেপািজেটাির বানাব। এজন আমরা এখােন িনেছর কমা
চালবঃ

git init

৪। এখন আমরা আমােদর চ েলা িগেট যাগ কের একটা কিমট করব। তার জন িনেছর কমা েলা চালাবঃ

িগট- ও ই টেলশন এবং কনিফগােরশন 18


বাংলায় িগট ভাসন কে ািলং

git add . git commit -m "initali commit with first file"

৫। এখন আমােদর সব েলা পিরবতন িগেটর াথিমক া master এ আেছ। এখন আমােদর িগট িরেপািজিটির
git-flow বানােনার জন তির। িগট- ও বানােনার জন এখন আমরা িনেছর কমা েলা রান করবঃ

িগট- ও ই টেলশন এবং কনিফগােরশন 19


বাংলায় িগট ভাসন কে ািলং

িগট- ও িফচার
িগট- ও িফচার করার আেগ আমরা িকছু িজিনস বানাব। যমন আমরা কান ােজ করার আেগ কান একটা
ােজ ম ােনজেম িসে েম, ােজ িরেলেটড সব িফচার (feature), বাগ (bug) ইত ািদ আমরা িব ািরত লেখ
রািখ। এরপর আমরা িবিভ ডেভলপারেক আমরা তা assign কের দই।

ধির আমােদর ােজে র নােম হেলা "Ûµ½- Ñ° (Hello Git-Flow)" আমােদর কােছ িন িলিখত িফচার েলা
আেছঃ

HGT-01: Bootstrap Hello Git-Flow project


HGT-02: Create login with Username and Password
HGT-03: Create user signup
HGT-04: Create forget Password
HGT-05: Homepage with login and Signup option

এখন, আমরা একটা একটা কের িফচাের কাজ করব, Ûµ½- Ñ° (git-flow) ÛɸÚÏ ব বহার কের।
ÅÚÈ-ñò

সবার আেগ আমরা HGT-01 িফচার িনেয় কাজ করব। এজন আমরা কমা িলখব

git-flow feature start HGT-01

এরপর আমরা িনেছর ছিবর মত একটা মেসজ দকেত পাব,

এখােন আমরা যটা দখেত পারিছ, তা হাল, সবার আেগ develop নােম য া (branch) আেছ, তার উপর
িনভর কের একটা নতুন া (branch) feature/HGT-01 তির হেয়েছ। এরপর য়ংি য় ভােব,ওই াে
(branch) পেয় কের ফেলেছ।

ÅÚÈ-ñó

িগট- ওিফচার 20
বাংলায় িগট ভাসন কে ািলং

এখন আমরা িফচার ডেভলপেমে র কাজ করব এবং মা েয় কিমট করব, যভােব আমরা িগেট (git) কিমট
করতাম। আমরা যত পিরবতন করব, সবই আমােদর বতমান ÛɸÚÏ (featuere) া এ যাগ হেত থাকেব। ধির,

একটা নতুন ফাইল বানাব কাের িফচােরর জন

touch project-config.php

এবার এই ফাইেল িকছু পিরবতন করব, মােন িকছু লখা যাগকরব

nano project-config.php

এবার আমরা ফাইলটা িগেট যাগ করব এবং িগেট কিমট করব

git add project-config.php


git commit -m "project configuration file is added"

ÅÚÈ-ñô

এবার ধের িনলাম আমােদর িফচার feature ডেভলপেমে র কাজ শষ। এখন আমরা িগট- ও িদেয় আমােদর
িফচার কমি ট করব।

git-flow feature finish HGT-01

এই কমা চালােনার পর আমরা িনেছর ছিবর মত একটা মেসজ দকেত পারব

িগট- ওিফচার 21
বাংলায় িগট ভাসন কে ািলং

িগট- ও িফচার পাবিলশ

আমরা যিদ মেন কির, কন একটা িফচার াে অন কউ কাজ করেব, তাহেল আমারা চাইেল িগেট আপ কের িদেত
পাির।এজন আমরা িনেচর কমা টা রান করবঃ

git-flow feature publish HGT-01

এই কমা চালােনার পর িনেচর মত একটা ীন দখা যােব।

িগট- ওিফচার 22
বাংলায় িগট ভাসন কে ািলং

িগট- ওিফচার 23
বাংলায় িগট ভাসন কে ািলং

িগট- ও িরিলস
িগট- ও এর আেরকিট েয়াজনীয় কমা হাল িগট- ও িরিলস। এটা িদেয় আমরা মূলত একটা development
branch থেক production সাভাের দয়ার মত একটা িরিলস তির কির। এটা িদেয় আমরা খুব সহেজ, একটা
িরিলস এর না ার িদেত পাির, যন খুব সহেজ আমরা আবার পরবতী কান িরিলএেস ব াক করেত পাির।

আমরা যিদ িগট- ও িরিলেসর িসনট া জানেত চাই, তাহেল আমরা কমা লাইেন িগেয় িনেচর কমা টাইপ করেল
হেবঃ

Git-flow release (press enter)

এবার আমরা িনেচর মত একটা ীন দখেত পাব।

এখােন িতনটা টাম আেছ, যা জানেত হেবঃ

1. <name> : ÛÏÛÑá×Ï ÆÚÌ। áÍÌÆ£ rel-v1.0


2. [<base>]: ¬½Ú ¬³½Ú Úá Ï ÆÚÌ। ÌÚáÆ ¥ÌÏÚ ÍÛÄ development branch áÃá³ Ú âÂÛÏ ÆÚ ³áÏ, ¤ Í á³ÚÆ Ú áÃá³ ÛÏÛÑ×

এবার আমরা একটা িরিলস তির করব। আমরা ধের িনি , আমােদর া development। তাহেল আর দির না
কের িনেচর কমা টা রান কির ◌ঃ

িগট- ও িরিলস 24
বাংলায় িগট ভাসন কে ািলং

git-flow release start rel-v1.0

এখন আমরা িনেচর মত একটা ীন দখেত পােবাঃ

আমরা এখন দখেত পলাম একটা নতুন া rel-v1.0নােমর একটা নুতুন া তির হেয়েছ।

আমরা এখন জতা করেত পাির, এই া টােক একটা টি ং সাভাের িদেয় দেত পাির। একদল QA দলেক বলেত
পাির, টি ং করেত। যখন, টি ং শষ হেব, আমরা িরিলসটােক finish কের িদেত পাির।

এখন জানেত হেব, িরিলস শষ(finish) করেল িক হয় ◌ঃ আমরা যখনই কান িরিলস শষ করব, িগট- ও
য়ংি য়ভােব িরিলস াে র সকল কাড development branch এবং production branch (master এখােন
production branch) এ merge কের দয়।

এখন আর কথা না বািড়েয়, কমা টা রান কের দিখঃ

git-flow release finish rel-v1.0

এখন আমরা িনেচর মত একটা ীন দখেত পােবাঃ

িগট মারজ মেসজ

িগট- ও িরিলস 25
বাংলায় িগট ভাসন কে ািলং

িগট ট াগ মেসজ

িগট- ও িরিলস 26
বাংলায় িগট ভাসন কে ািলং

িগট িফিনশ শষ

এখন আমরা একটু খয়াল কের summary of Actions এর িদেক খয়াল কের দিখ। এখােন আসেল িগট- ও
িক িক কাজ কেরেছ, তার একটা সারাংশ তুেল ধেরেছ। এবং শব শেষ মা ার া এ িশফট করেছ। মােন, rel-
v1.0 এর সকল কাড এখন (master) মা ার াে ও আেছ এবং development াে ও আেছ।

িগট- ও িরিলস 27
বাংলায় িগট ভাসন কে ািলং

িগট- ও হটিফ

িগট- ও হটিফ 28

You might also like