প্রোগ্রামিং জগতে যদি আপনার বিচরন হয় তবে git & github আপনার জন্য ফরয বলা চলে।আজকে আমরা git & github কে পিয়াজি বানিয়ে খাবো :)

Hi there, I am rakibul islam you can call me rakib, i have completed my graduation from chongqing university of technology,chongqing china department of cse & i really love to write blog & share
what is git?
Git হল একটি Source Code Version Control এবং Source Code Management System, অর্থাৎ আপনার কম্পিউটারে আগে কি কোড লিখেছেন এবং পরবর্তীতে তা কোথায় কোথায় পরিবর্তন করেছেন তার ভার্সন বা রিভিশন কন্ট্রোল এবং ভার্সন বা রিভিশন অনুযায়ী সংরক্ষণ করার একটি আদর্শ সিস্টেম । ২০০৫ সালে লিনাক্স কার্নেলের জন্য লিনাস টারভাল্ডস গিট ডিজাইন এবং ডেভেলপ করেন। জিএনইউ জেনারেল পাবলিক লাইসেন্স এর অধীন লিনাক্সের মত গিটও ওপেনসোর্স এবং এখন পর্যন্ত সফটওয়্যার ডেভেলপমেন্টের জন্য সবচেয়ে জনপ্রিয় ভার্সন কন্ট্রোল সিস্টেম।
what is github?
আর গিট হাব মূলত সোর্স কোড ম্যানেজ করার একটা প্ল্যাটফর্ম। এতে টুলস হিসেবে গিট ব্যাবহার করা হয়। আমরা আমাদের লিখিত কোড কাজ শেষে গিট কমান্ডের মাধ্যমে গিট হাব এর সাইটে আপলোড করে দিতে পারি। চাইলে অন্য কোন টিম মেম্বার এর সাথে সোর্স কোড খুব সহজেই শেয়ার করতে পারি।আবার আমাদের টিমের বিভিন্ন মানুষ বিভিন্ন টপিকের ওপর কাজ করে সেগুলো পুশ করতে পারে পরবর্তিতে সেটাকে merge করে একটা প্রজেক্ট বানিয়ে নিতে পারি। আবার চাইলে আমাদের প্রজেক্টে বাহিরের কেউ কন্ট্রিবিউট করতে পারে সেটাকে আমরা চাইলে merge করতে পারি আবার নাও পারি । এমন বিভিন্ন ধরনের মজার মজার বিষয় গুলো এই গিটহাবে বিদ্যমান।
গিট এবং গিটহাব নিয়ে আশা করি এবার কনফিউশন দূর ।এবার আসি গিট কে সবাই কেন বুঝতে পারে না আর কেন এত কনফিউশন।
গিট হলো কমান্ডের কারখানা এখানে কোড গুলো বিভিন্ন স্তরে ম্যানেজ করার জন্য আপনাকে বিভিন্ন ধরনের কমান্ড লিখতে হয় এত কিছু একবারে আমরা চিন্তা করতে গিয়ে মূলত আমরা গিট এবং গিটহাব কে ভয় করি। আমরা একদম শুরুতে এর বিভিন্ন কমান্ড নিয়ে আলোচনা করব যেগুলো আমাদের নিয়মিত ব্যাবহার করতে হবে।
প্রথমেই আমরা Git terminology নিয়ে জেনে নেই।

git features
--Tag
--Commit
--URL
--Index
--HEAD
--Branch
এগুলোর মধ্যে আমাদের সব থেকে বেশি ব্যাবহত হলোঃ
--git commit – অফলাইন(offline) রিপোজিটরিতে স্থায়ীভাবে কাজ সংযুক্ত করার জন্য ব্যবহৃত হয়।মানে হলো আপনার প্রজেক্টে কি কি পরিবর্তন করলেন সেগুলো সংক্ষেপে উল্লেখ করা।
--git branch– রিপোজিটরি(repository) তে নতুন branch তৈরির জন্য ব্যবহৃত হয়।তাহলে (repository)কি? রিপোজিটরি হলো আপনার প্রজেক্ট গিটহাবে কি নামে রেখেছেন সেটার নাম সহজ ভাষায় আপনার ফোল্ডার এর নাম । আপনার বিভিন্ন প্রজেক্টের জন্য বিভিন্ন ধরনের রিপোজিটরি হবে।
--URL এটাও মাঝে মাঝে ব্যাবহার করব যদি আমরা অন্য একটা রিপোজিটোরি নিয়ে তার url পরিবর্তন করতে চাই।
গিটে ব্যাবহত বিভিন্ন ধরনের কমান্ডঃ
git init -একটি নতুন রিপোজিটরি(repository) তৈরি করার জন্য ব্যবহৃত হয়।
git config – গিট এ Configuration গুলো সেট করার জন্য ব্যবহৃত হয়।
git status-গিটের বর্তমান status check করা।
git add – রিপোজিটরি(repository) তে এক বা সবগুলো ফাইল একসাথে যুক্ত করার জন্য ব্যবহৃত হয়।
git clone – পূর্ব থেকে বিদ্যমান কোন রিপোজিটরির সম্পূর্ণ তথ্য ডাউনলোড করার জন্য ব্যবহৃত হয়।
git commit – অফলাইন(offline) রিপোজিটরিতে স্থায়ীভাবে কাজ সংযুক্ত করার জন্য ব্যবহৃত হয়।
git pull – রিমোট(remote) রিপোজিটরি থেকে ফাইল ডাউনলোড করে অফলাইন রিপোজিটরির সাথে merge করার জন্য ব্যবহৃত হয়।
git log– গিট এর log check করার জন্য ব্যবহৃতহয় হয়।
git push – অফলাইন রিপোজিটরি থেকে ফাইল রিমোট রিপোজিটরিতে আপলোড করার জন্য ব্যবহৃত হয়।
git branch– রিপোজিটরি(repository) তে নতুন branch তৈরির জন্য ব্যবহৃত হয়।
git checkout -master ব্রাঞ্চ থেকে অন্য ব্রাঞ্চে সুইচ করতে ব্যবহার হয়।
git merge – এক ব্রাঞ্চের সাথে অন্য ব্রাঞ্চকে Merge করতে ব্যবহার হয়।
এবার আসি কিভাবে কাজ হয়ে থাকে আমাদের লোকাল ডিরেক্টরি এবং আমাদের ক্লাউড ডিরেক্টরিতে ।
-প্রথমে আমরা যদি আমাদের লোকাল ডিরেক্টরি তে কোন পরিবর্তন করে থাকি তাহলে সেটা কে stage এ উঠিয়ে দেব।
Local-->working directory -->stage--?
এরপর আমরা আমাদের stage থেকে local একটা repository তে উঠাব।
Local-->working directory -->stage--local repository-->?
তাহলে আমাদের এই local repository তে কি কি থাকে?
লোকাল রিপোজিটরি তে বিভিন্ন ধরনের tracking code থাকে git এর যেগুলো আমাদের প্রজেক্টের বিভিন্ন ধরনের অবস্থা বলে দেই।এই লোকাল পর্যন্ত আমাদের কোড লোকালেই থাকে এখন পর্যন্ত আমরা আমাদের কোড github পাঠায় নি।
এখন আমাদের প্রজেক্টের সব কিছু ঠিকঠাক থাকলে আমরা আমাদের এই প্রজেক্ট কে ক্লাউড রিপোজিটরি অর্থাৎ আমরা গিটহাবে পাঠাতে বা পুশ করতে পারি।
Local-->working directory -->stage--local repository-->githhub repository
এবার আসি আমরা কিভাবে আমাদের লোকাল মেশিনে কাজ করতে পারি গিট এবং গিটহাব নিয়ে।
চলুন প্রথমেই একটা ফোল্ডার তৈরি করি যেখানে আমাদের শুধুমাত্র আজকের এই গিট নিয়েই আলোচনা হবে।
তো এই জন্য আপনি চাইলে ম্যানুয়ালি তৈরি করতে পারেন আবার কমান্ডের মাধ্যমেও তৈরি করতে পারেন।যেহেতু আমরা এখন থেকে কমান্ড নিয়ে কাজ করব তাই আমরা কমান্ড দিয়েই তৈরি করব।
আপনি যেখানে এই কাজ গুলো করবেন সেখানে কমান্ড লাইন ওপেন করেন।আপনার মেশিনে যেহেতু git install করা আছে তাই আপনি চাইলে ফোল্ডার এর মধ্যে রাইট বাটন ক্লিক করলে git bash নামের একটা বাটন পাবেন সেখানে ক্লিক করলেই আপনার কমান্ড লাইন ওপেন হয়ে যাবে সেই ফোল্ডারে।
এরপর-
mkdir gitone (এই কমান্ড টি রান করলে একটা ফোল্ডার তৈরি হবে।)
এবার gitone folder এর মধ্যে যেতে cd gitone(এই কমান্ড টি রান করলে আপনার কমান্ড লাইন gitone এর মধ্যে কাজ করবে।)
এবার দুইটা ফাইল তৈরি করব and একটা ফোল্ডার তৈরি করব
touch one.txt
touch two.txt
mkdir myfolder
এবং এই myfolder এর মধ্যে আরেকটা ফাইল তৈরি করব
touch three.txt নামে।
এবার আমরা আমাদের one,two,three এই ফাইল গুলোর মধ্যে one,two,three লিখি।
এবার যদি আমরা আমাদের working directory অর্থাৎ আমাদের যে gitone folder টা আছে সেখানে গিট কে initialize করি আমাদের ফাইল এবং ফোল্ডার কে track করার জন্য।
তাহলে আমরা cd ..(এই কমান্ড টি রান করলে আমরা যে myfolder এর মধ্যে ছিলাম সেখান থেকে এবার gitone folder এর মধ্যে চলে আসব।)
এবার আমরা এখানে
git init(এই কমান্ড টি রান করলে .git নামের একটা hidden folder তৈরি হবে)
যেটার মধ্যে বিভিন্ন ধরনের ফাইল এবং ফোল্ডার থাকবে যেগুলো আমাদের তৈরিকৃত ফাইল এবং ফোল্ডার এর অবস্থা বলে দেবে।এবং সাথে সাথে আমাদের লোকালে একটা রিপোজিটরি ও initialize হয়ে গেল।
এবার আমরা আমাদের github এ চলে যায় এবং সেখানে আমরা দেখতে পাবো হাতের ডানে ওপরে (+ sign )সেখানে ক্লিক করলে new repository আসবে সেটাতে ক্লিক করলে আমাদের রিপোজিটরি তৈরির opotion আসবে আমরা এবার এখানেও একটা রিপোজিটরি তৈরি করব।
এখানেও আমরা gitone1 নামের একটা রিপোজিটরি তৈরি করলাম।
এবং তৈরি করার সাথে সাথেই আমাদের কিছু লেখা দিবে।
git init
git add README.md
git commit -m "first commit"
git branch -M main
git remote add origin https://github.com/Rakibulislam33/gitone1.git
git push -u origin main
এই লেখাগুলো নিয়ে আমাদের কিছু কাজ আছে ।আমরা যখন কোন রিপোজিটরি তৈরি সেখানে আমাদের লোকাল ফাইল এবং ফোল্ডারগুলো আপলোড করতে চাই তাহলে প্রথমেই আমাদের লোকাল ফোল্ডার এর মধ্যে।
git init
git add .
git commit -m "first commit"
git remote add origin https://github.com/Rakibulislam33/gitone1.git
git push -u origin main
এই কোড গুলো রান করলেই আমাদের লোকাল ফাইল ফোল্ডার গুলো আপলোড হয়ে যাবে আমাদের তৈরি রিপোজিটরি তে।
এছাড়াও আমরা রিপো তৈরি করে সেখান থেকে ক্লোন করে আমাদের লোকালে সব কোড দিয়ে সেটাকে stage ,commit করে push করতে পারি।
এবার আমরা সেখানে ম্যানুযায়লি ফাইল তৈরি করার অপশন পাব create a new file সেটাতে ক্লিক করে আমাদের লোকাল মেশিনের ফাইল গুলো তৈরি করে নেই।
one & two দুইটা ফাইল এবং আমরা সেই ফাইল এর মধ্যেও যথাক্রমে one & two লিখি।
এবার আমাদের লোকাল যে ফাইল টা আছে সেটা তার যায়গায় থাক ।আমরা এবার এই রিপোজিটরি টা আমাদের লোকাল মেশিনে নিয়ে গিয়ে কাজ করব। এজন্য আমরা এই রিপোজিটরি টা ক্লোন করব ।ক্লোন করার জন্য code নামে সবুজ একটা বাটন আছে সেখানে ক্লিক করলে আমরা একটা লিংক পাব সেটাকে কপি করব। আমরা চাইলে ম্যানুয়ালিও download করতে পারব।
এবার আমাদের লোকাল মেশিনে যেখানে এই repository clone করব সেখানে আমাদের command line open করব এবং।
git clone [https://github.com/Rakibulislam33/gitone1.git(আমাদের](https://github.com/Rakibulislam33/gitone1.git(আমাদের) copy করা লংক টা এখানে paste করে enter press করলে আমাদের repository টা ক্লোন হয়ে যাবে।)
তাহলে আমরা এখানে git clone করতে হয় কিভাবে সেটা জানলাম।
এবার আমরা এখানে যদি দেখতে চাই কি কি ফোল্ডার আছে
ls(এই কমান্ড টি রান করলে আমাদের এই directory তে কি কি ফোল্ডার আছে দেখতে পাব।) এবার আমরা clone করা folder এর মধ্যে যাব।
cd gitone1
এবং এখানে আমরা যদি দেখি তাহলে দেখতে পাব hidden file এ .git নামের একটা ফোল্ডার আছে যেটা কি না আমাদের ক্লাউড রিপোজিটরি থেকেই তৈরি হয়েছে। এবার যদি আমরা আমাদের যে ২ টা ফাইল আছে সেখানে নতুন কিছু লিখি এবং দেখতে চাই গিটের মাধ্যমে কি কি পরিবর্তন হয়েছে তাহলে:
git status (এই কমান্ড টি রান করলে আমাদের ফাইলের কি কি পরিবর্তন হয়েছে সগুলো দেখতে পাব)।
তাহলে এখন পর্যন্ত আমরা আমাদের local machine and cloud maachine এ
--গিট initialize করলাম
--গিট ক্লোন করলাম,
--গিট status check করলাম।
এখন আমরা আমাদের clone করা ফোল্ডার এর মধ্যে নতুন করে আরেকটা ফোল্ডার তৈরি করি এবং তার মধ্যে আবার ফাইল তৈরি করি।এবং ফাইলের মধ্যে কিছু লিখি। এখন আমাদের নতুন অনেক কিছুই add হয়েছে আমরা এখন আরেকটা step শিখব সেটা হলো git staging বা add
এখন আমরা যদি চেক করতে চাই আমাদের কমান্ড লাইন কোন ফোল্ডারে আছে তাহলে pwd (এই কমান্ড টি রান করলে আমাদের command line কোথায় আছে সেটা দেখতে পাব।)
এবার আমাদের working directory তে এসে আমাদের local file গুলোকে staging e উঠাতে চাইলে
git status (এটা দিয়ে চেক করে নেব আমাদের ফাইল্গুলো কি কি পরিবর্তন হয়েছে ।)
git add one.txt (এই কমান্ড টি রান করলে আমাদের শুধু মাত্র একটা specific ফাইল stageing হবে)।
git add --all অথবা git add -A (এই কমান্ড টি রান করলে আমাদের সব ফাইল এবং ফোল্ডার stageing হবে)।
staging করার এখানে আরেকটা command আছে সেটা হলো
git add . (এই command টি যদি আমরা এখানে রান করি তাহলে আমরা আমাদের সব ফাইল গুলো কেই staging করতে পারব কিন্তু যে ফোল্ডার এর মধ্যে এটা চালাব সেই ফোল্ডার এর সব গুলো। এর ভিতরে আরেকটা ফোল্ডার এর মধ্যে যদি) আমরা এই কমান্ড টি রান করি তাহলে কেবল মাত্র সেই ফোল্ডার এর ফাইল গুলো staging হবে এর পিছনের ফোল্ডার গুলো staging হবে না।
অর্থাৎ আমাদের gitone1 এর মধ্যে যে myfolder আছে তারমধ্যে যদি আমরা এই কমান্ড টি রান করি তাহলে কেবল মাত্র আমাদের myfolder এর ফাইল staging হবে অন্য গুলো না।
git add এর আরেকটা variation আছে সেটা হলো
git add (এই কমান্ড টি আমাদের সব ফাইল গুলো কে stage এ তুলবে কেবল মাত্র আমরা যদি কোন ফাইল কে ডিলিট করি সেই ফাইল টা কে বাদে )
git add এর আরেকটা variation আছে সেটা হলো
আমরা যদি এবার git add *.txt (এই কমান্ড টি রান করি তাহলে আমাদের .txt নামের যত ফাইল আছে যেগুলো পরিবর্তন করেছি সবগুলো কেই staging এ তুলবে)।
এখন আমরা এই staging থেকে যদি ব্যাকে যেতে চাই বা unstaaged করতে চাই তাহলে
git reset (এই কমান্ড টি রান করলে আমাদের ফাইল এবং ফোল্ডার unstageing হবে)।]
staging বা add এর যাবতীয় কিছু আমরা দেখে ফেললাম ।এখন আমরা আমাদের পরের step অর্থাৎ stage থেকে local repository তে নিয়ে যাব মানে কমিট করব।
Local-->working directory -->stage-->local repository-->
তাহলে আমরা যা যা change করলাম সেগুলো stageing করলাম
git add .
এবার আমরা stage থেকে commit করব।
git commit -m"i have made changes one & two.txt files and make another folder" (এই কমান্ড টি রান করলে আমাদের ফাইল গুলো commit হয়ে যাবে অর্থাৎ সেইভ হয়ে যাবে)।
এখন যদি আমাদের ফাইলে অবস্থা চেক করতে চাই তাহলে আবার
git status (এই কমান্ড টি রান করব।)।
এখন যদি আমি আবার আমার ফাইল্গুলো কে ব্যাক স্টেজ এ নিয়ে যেতে চাই অর্থাৎ আমাদের কিছু ভূল হয়েছে সেই ফাইল গুলো আমরা আবার নতুন করে কমিট করব তাহলে।
git reset HEAD~ (এই কমান্ড টি রান করব।)তাহলে আবার প্রথম অবস্থায় নিয়ে যাবে মানে stage এ উঠাতে হবে এবং তারপর commit করতে হবে।
এবার আসি আমরা যদি চাই আমাদের ফাইল remove(ডিলিট) করে সেটাকে আবার rollback করাতে তাহলে।
git reset --hard (এই কমান্ড টি রান করলে আমরা আমাদের ডিলেট হয়ে যাওয়া ফাইল টা কেও rollback করাতে পারব।)
এবার আসি remove এর দিকে।
আমরা যদি কোন একটা ফাইলকে রিমুভ করতে চাই তাহলে।
git rm one.txt (এই কমান্ড টি রান করলে আমাদের ফাইল রিমুভ হয়ে যাবার পাশাপাশি আমাদের পরিবর্তন টা staging ও করে ফেলবে।)আর যদি ম্যানুয়ালি ডিলিট করি তাহলে আমাদের ডিলিট করে আবার staging এ তুলা লাগবে।
এখন আরেকটা বিষয় আছে সেটা হলো আমরা যদি আমাদের ফাইল আবার rollback করি এবং কিছু change করে আবার যদি রিমুভ করতে চাই তাহলে আমাদের কে remove করতে দেবে না ক্কিন্তু আমরা যদি remove করতে চাই তাহলে। git rm one.txt -f (এই কমান্ড টি রান করতে হবে অর্থাৎ force করতে হবে ।)
এবার আসি git remove এর cache এ ।আমরা যদি আমাদের ফাইলের কোন একটা যায়গায় পরিবর্তন করি এবং সেটাকে ডিলিট করে stage উঠাতে চাই কিন্তু আমাদের যে working directory local machine সেখানে ফাইল টা দেখাতে চাই তাহলেঃ
git rm --cached two.txt (এই কমান্ড টি রান করব)।
এবার আসি git remove এর recursive এ ।আমরা যদি কোন একটা ফোল্ডার কে রিমুভ করতে চাই এবং সেই ফোল্ডার এর মধ্যে যদি আরো ফোল্ডার থাকে সব গুলো কে তাহলে ।
git rm -r myfolder (এই কমান্ড টি রান করলে recursive way তে সব কিছু ডিলেট করবে।)
এবার আসি git and github এর অনেক গুরুত্তপূর্ন একটা বিষয় branching নিয়ে । branching টা মূলত কি?(এটা মূলত শাখা প্রশাখা অর্থাৎ আমাদের প্রজেক্টের বিভিন্ন শাখা প্রাথমিক অবস্থায় আমাদের প্রজেক্টে একটাই branch থাকে।) কেন আমাদের branching দরকার।অনেক সময় আমাদের মেইন branch টা live হয়ে গেলে পরবর্তিতে আমাদের ক্লায়েন্ট যদি সেই প্রজেক্ট এ নতুন কিছু chhange চাই তাহলে আমরা সেই প্রজেক্টের আলাদা একটা branch maake করে সেখানে নতুন change করে তারপর আমরা update বা merge করে নেব আমাদের মেইন branch এর সাথে।
আমরা যদি চেক করতে চাই আমাদের প্রজেক্টে কয় টা branch আছে তাহলেঃ
git branch
নতুন branch তৈরি করতে চাইলেঃ
git branch newBranch
এবং এখানে নতুন branch টা তৈরি হয় মেইন branch এর সব ফাইল এবং ফোল্ডার নিয়ে।
এখন যদি আমরা চেক করি
git branch
তাহলে আমরা দেখব এখানে ২ টা branchh আছে এবং আমাদের main branch টা selected.
এখন যদি আমরা আমাদের মেইন ব্রাঞ্চ থেকে নতুন ব্রাঞ্চে যেতে চাই তাহলেঃ
git checkout newbranch
এখন আমরা আমাদের এই branch এ যদি নতুন করে ফোল্ডার তৈরি করে তার মধ্যে লিখি এবং সেটা কে stageing করে কমিট করি। এবং এর পর আবার আমাদের মেইন ব্রাঞ্ছে switched করি তাহলে আমরা দেখব আমাদের মেইন ব্রাঞ্ছে কোন ফাইল তৈরি হয় নাই।কিন্তু আমাদের newbranch এ ফাইল তৈরি হয়েছে।
এখন আমরা যদি আবার আমাদের মেইন ব্রাঞ্ছে নতুন করে মডিফাই করি staging করে কমিট করি ।এবং আমাদের newbranch কে আবার এর সাথে merge করতে চাই তাহলে আমরা আবার আমাদের newbranchh এ গিয়ে । git merge main -m"merging newbranch with main" (এই কমান্ড টি রান করলে আমাদের newbranch এ যে কোড গুলো আছে সেগুলোর সাথে আমাদের মেইন ব্রাঞ্ছে যে নতুন করে আপডেট করলাম সেগুলো এখানে দেখাবে)
এখন যদি আমরা আমাদের newbranch এর কোড গুলো main branch এ নিয়ে আসতে চাই তাহলেঃ
git merge newbranch -m"merging main with newbranch"
এটা তো সুন্দর ভাবেই আমাদের ব্রাঞ্ছে merge হয়ে গেল কিন্তু অনেক সময় আমাদের merge করতে গেলে কনফ্লিক্ট হয় সেটা কেন হয় চলুন জেনে নেই।
--যদি দুইটা ব্রাঞ্চে একই সাথে একি নামের ফাইল তৈরি করা হয় ।বা দুই টা ব্রাঞ্চে একই ফাইলে পরিবর্তন করা হয়।
তাহলে এটা সমাধান কিভাবে করতে হবে?
আমাদের অন্য ব্রাঞ্ছে যিনি কাজ করছেন তার সাথে আপনার change নিয়ে আলোচনা করে যে কোন একটা কোড রেখে সেটা staging করে তারপর সেটা কমিট করলেই এটার সমাধান হয়ে যাবে এবং এখন যদি আপনাআর ব্রাঞ্চ চেক করেন দুইটা ব্রাঞ্চে একই কোড রয়েছে। এখন চাইলে দুই যায়গা থেকেই merge করা যাবে এবং ফাইনালি main branch এর সাথে merge করলেই সব কোড update হয়ে যাবে।
আশা করি খুব সুন্দর ভাবে conflict এর সমাধান বুঝতে পেরেছেন ।এবং কেন conflict হয় সেটাও বুঝতে পেরেছেন।
এতখন যতগুলো কাজ করেছি সব ই ছিল লোকাল ভিত্তিক এবার আমাদের কাজ হবে cloud ভিত্তিক ।
remote/cloud থেকে আমরা যদি কোন কিছুকে নিয়ে আসতে চাই তাহলে আমরা এখানে
-fetch
-pull
এই দুইটা ব্যাবহার করতে পারি তবে এখানে একটা বিষয় fetch টা শুধুমাত্র পরিবর্তন টা নিয়ে আসবে অপরদিকে pull টা সমস্ত কোড সহ পরিবর্তন নিয়ে আসবে।
তাহলে এখানে আমরা দেখতে পাচ্ছি।
local-->remote==>push
remote-->local (আমরা যদি শুধু পরিবর্তন চাই তাহলে fetch । এবং আমরা যদি সমস্ত কোড merge সহকারে চাই তাহলে pull).
তাহলে overall
pull==fethc+merge
তাহলে প্রথমেই আসি local থেকে remote এ কিভাবে পুশ করতে পারি।
git push origin main (এখানে origin টা কে remote বলা হয়। এবং এর পর আমরা remote এর কোন ব্রাঞ্চে আমাদের কোড টা কে push করতে চাই সেটা দিয়ে দেব।)
এখন আমরা যদি আমাদের কোড গুলো কে আবার আমাদের আরেকটা যে ব্রাঞ্চ newbranch আছে সেখান থেকে remote এ পাঠবো তাহলেঃ
git push origin newbranch (এই কমান্ড টি রান করলে remote এ নতুন করে newbrach তৈরি হবে এবং সেখানে সমস্ত কোড গুলো আপডেট হয়ে যাবে।)
এবার যদি আমরা আমাদের রিমোট এ কোন পরিবর্তন করি এবং সেটাকে লোকালে নিয়ে আসতে চাই তাহলেঃ
git fethc (এটা করলে কেবল সেটা রিমোট থেকে stageing হবে লোকালে আসার জন্য। এবং এর পর আমি যদি আমাদের ফাইলে পরিবর্তন টুকু দেখতে চাই তাহলে আমাদের merge করতে হবে।) git merge
এবং এই সেইম কাজ টা যদি আমাদের লোকালে একবারে দেখতে চাই তাহলেঃ
git pull (এই কমান্ড টি রান করব।)
এতখন পর্যন্ত আমরা যা যা করলাম সব কমান্ড গুলো যদি একবারে দেখিঃ
git init -- creates the local repo and initialized
git clone link -- creates the clone folder
git status -- shows modified files
git add -all - add the directory change to stage
git add . -- add the specific directory change to stage
git add * -- add all files change except delete
git add link -- add specific change file
git reset -- resets the changes of git add ]
git commit m "message" - commit the changes
git reset HEAD~ -- reset all commits
git branch name -- creates a git branch of the following name
git checkout name -- goes to the name branch
git branch -- lists all the branch
git merge name -- transfer properities of name to directory
git push orgin name -- transfer the folder to the online github repo
git pull -- git fetch plus merge
আশা করি git এর ভয় দৌড়ে পালিয়েছে।
Happy Learning
Rakibul Islaam

