রোডম্যাপ

Git কীভাবে শিখবেন: শেখার পরিকল্পনা, অনুশীলন ও প্র্যাকটিস

হালনাগাদ: · Skillaria.Top

Git শেখা ভালো হয় চার ধাপে: মূল চক্র (init, add, commit, log), ব্রাঞ্চ ও merge, রিমোট রিপোজিটরি ও দলগত কাজ, এরপর ভুল বাতিল ও উন্নত সরঞ্জাম। কার্যকর পর্যায়ে পৌঁছাতে সাধারণত নিজের রিপোজিটরিতে ২–৪ সপ্তাহের নিয়মিত অনুশীলন লাগে।

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

এই পরিকল্পনা নতুনদের জন্য, যারা টার্মিনালে cd ও ls অন্তত চালাতে পারেন। না পারলে কমান্ড-লাইনের মূল বিষয়গুলো এক সন্ধ্যা দিয়ে শিখে নিন: তা ছাড়া Git শেখা অনেক কঠিন।

Git কেন পদ্ধতিগতভাবে শেখা উচিত

অনেকে বছরের পর বছর অন্যের নির্দেশনা থেকে কপি করা পাঁচটি কমান্ড দিয়ে কাজ চালান, আর প্রথম কনফ্লিক্ট বা "detached HEAD"-এ আতঙ্কিত হন। কারণ প্রায় সবসময় একটাই — মানসিক মডেলের অভাব: কমান্ডটি ইতিহাসে ও ফাইলে ঠিক কী বদলাচ্ছে, তা জানা থাকে না।

পদ্ধতিগত শেখা দ্রুত ফল দেয়। পরীক্ষা করতে আর ভয় লাগে না, কারণ ফিরে আসার উপায় জানা থাকে; কনফ্লিক্ট শান্তভাবে মেটানো যায়; এবং এমন পরিষ্কার ইতিহাস তৈরি হয়, যা রিভিউয়াররা ও নিয়োগকর্তারা দেখেন। প্রায় সব আইটি পেশার, ফ্রন্টএন্ড থেকে DevOps ও ডেটা বিশ্লেষণ পর্যন্ত, সাক্ষাৎকারে Git নিয়ে প্রশ্ন আসে।

ধাপ ১. মূল বিষয়: রিপোজিটরি, ইনডেক্স, কমিট

প্রথম ধাপের লক্ষ্য মূল চক্রটি এবং Git-এর তিন অংশ — ওয়ার্কিং ডিরেক্টরি, ইনডেক্স ও রিপোজিটরি — বোঝা। সময় লাগে ২–৪ দিন, প্রতিদিন এক ঘণ্টা।

  • ইনস্টল ও প্রাথমিক সেটিং: git config --global user.name, user.email, ডিফল্ট ব্রাঞ্চ main।
  • রিপোজিটরি তৈরি: git init।
  • চক্র git status → git add → git commit; নির্বাচিতভাবে যোগ করা git add -p।
  • ইতিহাস দেখা: git log --oneline, git diff, git diff --staged, git show।
  • .gitignore ফাইল: রিপোজিটরিতে কী যাবে না।

অনুশীলন। নিজের নোট বা ছোট একটি স্ক্রিপ্টের জন্য একটি রিপোজিটরি বানান। ১৫–২০টি কমিট করুন, প্রতিটিতে একটি যুক্তিসংগত পরিবর্তন ও স্পষ্ট বার্তা দিয়ে। প্রতিটি কমান্ডের পর git status চালিয়ে নিজেকে ব্যাখ্যা করুন কী বদলেছে।

ধাপ সম্পন্ন, যদি বিনা সাহায্যে বলতে পারেন git diff-এর আউটপুট git diff --staged-এর থেকে কীভাবে আলাদা, এবং বদলানো ফাইলের শুধু কিছু অংশ কমিট করতে পারেন।

ধাপ ২. ব্রাঞ্চ ও merge

ব্রাঞ্চ Git-এর হৃদয় এবং নতুনদের মূল ভীতির উৎস। এখানে কমান্ড মুখস্থ নয়, বরং কমিটের গ্রাফ কল্পনা করতে শেখা জরুরি। এই ধাপে প্রায় এক সপ্তাহ লাগে।

  • তৈরি ও বদল: git branch, git switch, git switch -c।
  • HEAD কী এবং detached HEAD অবস্থা।
  • Merge: git merge, fast-forward ও merge-কমিট, এবং --no-ff ফ্ল্যাগ।
  • কনফ্লিক্ট: <<<<<<< ও >>>>>>> চিহ্ন, এবং git merge --abort।
  • দৃশ্যায়ন: git log --oneline --graph --all।

অনুশীলন। main থেকে দুটি ব্রাঞ্চ বানান এবং প্রতিটিতে একটি ফাইলের একই লাইন বদলান। একে একে merge করুন, কনফ্লিক্ট পাবেন এবং মেটাবেন। একই কাজ আবার করুন, যতক্ষণ না প্রক্রিয়াটি একঘেয়ে লাগে।

এই ধাপে সবচেয়ে বেশি সাহায্য করে ইন্টারঅ্যাক্টিভ Git ট্রেইনার — নিচে আলোচনা আছে। প্রতিটি কমান্ডের পর এটি গ্রাফ দেখায় এবং দ্রুত ধারণা গড়ে তোলে।

ধাপ ৩. রিমোট রিপোজিটরি ও দলগত কাজ

লক্ষ্য: দলে যেভাবে সার্ভারের সঙ্গে কাজ করা হয়, সেভাবে শেখা। GitHub, GitLab বা অন্য কোনো Git হোস্টিংয়ে একটি অ্যাকাউন্ট লাগবে। সময় প্রায় এক সপ্তাহ।

  • যুক্ত করা ও ক্লোন: git remote add, git clone, SSH কী দিয়ে লগইন।
  • সিঙ্ক্রোনাইজ: git push, git push -u, git fetch, git pull ও তাদের পার্থক্য।
  • origin/main-এর মতো রিমোট-ট্র্যাকিং ব্রাঞ্চ।
  • ফর্ক, ফিচার ব্রাঞ্চ ও কোড রিভিউসহ pull request।
  • দলগত প্রক্রিয়া: GitHub Flow, Git Flow, trunk-based development।

অনুশীলন। একটি রিপোজিটরি দুটি "কম্পিউটার" থেকে নিয়ে কাজ করুন: দুটি আলাদা ফোল্ডারে ক্লোন করুন। একটিতে কমিট করে push করুন, অন্যটিতে নামান। এমন পরিস্থিতি বানান যেখানে সার্ভার এগিয়ে যাওয়ায় push প্রত্যাখ্যাত হয়, এবং কারণটি বুঝুন।

git clone git@github.com:you/sandbox.git copy-a
git clone git@github.com:you/sandbox.git copy-b
cd copy-a && echo "A থেকে" >> notes.txt && git commit -am "A-এর সংশোধন" && git push
cd ../copy-b && echo "B থেকে" >> notes.txt && git commit -am "B-এর সংশোধন"
git push          # প্রত্যাখ্যাত: সার্ভার এগিয়ে গেছে
git pull          # A-এর সংশোধন আনা, notes.txt-এর কনফ্লিক্ট মেটানো
git push

এই ছোট পরিস্থিতি দলের সবচেয়ে সাধারণ ঘটনার মডেল। প্রতিটি কমান্ডের আউটপুট বিশ্লেষণ করুন: push কেন প্রত্যাখ্যাত হলো, fetch-এর পর origin/main-এ কী এলো, merge-কমিট কোথা থেকে এলো। তারপর git pull --rebase দিয়ে একই কাজ করে git log --oneline --graph --all দিয়ে দুই গ্রাফ তুলনা করুন।

আরও ভালো হয় একজন সঙ্গী খুঁজে নিয়ে একসাথে pull request-ভিত্তিক ছোট প্রজেক্ট করা: তাতে রিভিউ, কনফ্লিক্ট ও ব্রাঞ্চ নিয়ে সমঝোতার অভিজ্ঞতা হয়।

ধাপ ৪. ভুল বাতিল করা

এই ধাপ Git-কে আতঙ্কের উৎস থেকে নিরাপত্তা-জালে বদলে দেয়। ৩–৫ দিন।

  • git restore ও git restore --staged — ফাইল ও ইনডেক্সের বাতিল।
  • git commit --amend — শেষ কমিট ঠিক করা।
  • git reset-এর --soft, --mixed, --hard মোড।
  • git revert — প্রকাশিত কমিট নিরাপদে বাতিল।
  • git reflog — "হারিয়ে যাওয়া" কমিট ফেরানো।

অনুশীলন। কয়েকটি কমিট করুন, git reset --hard HEAD~3 চালান, এবং reflog দিয়ে সেগুলো ফেরান। একটি "শেয়ার্ড" ব্রাঞ্চে কোনো কমিট revert করে ইতিহাসে কেমন দেখায় তা দেখুন।

ধাপ ৫. উন্নত সরঞ্জাম

এগুলো প্রয়োজন অনুযায়ী শেখা হয়, তবু আগে থেকে জানা ভালো।

সরঞ্জামকখন দরকার
git rebase ও git rebase -iসরল ইতিহাস, pull request-এর আগে কমিট গোছানো
git stashঅসমাপ্ত কাজ কমিট না করে দ্রুত ব্রাঞ্চ বদলানো
git cherry-pickএকটি কমিট অন্য ব্রাঞ্চে নেওয়া, যেমন হটফিক্স
git tagরিলিজের ভার্সন চিহ্নিত করা
git bisectকোন কমিট কোড ভেঙেছে খুঁজে বের করা
git worktree, git submoduleএকাধিক ওয়ার্কিং কপি; ভেতরে ভেতরে রিপোজিটরি

Git ট্রেইনার: কোথায় অনুশীলন করবেন

ট্রেইনারের সুবিধা — নিরাপদ স্যান্ডবক্স ও তাৎক্ষণিক ফল। কয়েকটি বিনামূল্যের বিকল্প:

  • Learn Git Branching (learngitbranching.js.org) — ব্রাঞ্চ নিয়ে সেরা ট্রেইনার। স্তরভিত্তিক কাজ, অ্যানিমেটেড কমিট গ্রাফ, একাধিক ভাষায় ইন্টারফেস। commit, branch, merge, rebase, cherry-pick, ইন্টারঅ্যাক্টিভ rebase ও রিমোট কাজ এখানে আছে।
  • Oh My Git! — ওপেন সোর্স একটি বিনামূল্যের গেম, যেখানে Git-এর কমান্ড কার্ড আকারে থাকে, আর ভেতরে চলে আসল Git।
  • নিজস্ব স্যান্ডবক্স রিপোজিটরি — সবচেয়ে কম মূল্যায়িত ট্রেইনার। git-sandbox নামে একটি ফোল্ডার বানিয়ে সেখানে যা খুশি ভাঙুন: হারানোর কিছু নেই।

ট্রেইনার গ্রাফ বোঝার জন্য দারুণ, কিন্তু আসল প্রজেক্টের বিকল্প নয়: সেখানে আসল ফাইল, এডিটর, কোডের কনফ্লিক্ট ও IDE থাকে না। সহায়ক হিসেবে ব্যবহার করুন।

Git-এর ডকুমেন্টেশন ও বই

Git-এর অফিসিয়াল ডকুমেন্টেশন git-scm.com-এ। সেখানে বিনামূল্যে পাওয়া যায় Pro Git বইটি (লেখক Scott Chacon ও Ben Straub)। এটি Git-এর সেরা বই: প্রথম তিনটি অধ্যায় (মূল বিষয় ও ব্রাঞ্চিং) অবশ্যপাঠ্য, আর "Git-এর ভেতরে" অধ্যায়টি তাদের জন্য, যারা ডেটা মডেল পুরোপুরি বুঝতে চান। বইটি একাধিক ভাষায় অনুবাদ হয়েছে; আপনার ভাষায় সংস্করণ আছে কি না git-scm.com-এর ভাষা তালিকায় দেখুন।

ভেতরের সাহায্যও সবসময় হাতের কাছে: git help <কমান্ড> পূর্ণ নির্দেশিকা খোলে, git <কমান্ড> -h ফ্ল্যাগের সংক্ষিপ্ত তালিকা দেখায়। Git-এর ডকুমেন্টেশন শুকনো কিন্তু নির্ভুল; সার্চের প্রথম উত্তরের বদলে এর সঙ্গে মিলিয়ে দেখার অভ্যাস করুন।

git help rebase        # পূর্ণ নির্দেশিকা
git switch -h          # ফ্ল্যাগের সংক্ষিপ্ত সাহায্য
git help -g            # ধারণামূলক নির্দেশিকার তালিকা (gitworkflows, gittutorial…)

gittutorial ও giteveryday নির্দেশিকাও কার্যকর — এগুলো Git-এর স্ট্যান্ডার্ড প্যাকেজে থাকে এবং git help দিয়ে খোলা যায়।

নিজে শেখা নাকি কোর্সে

নিজে শেখাও সম্ভব: বই, ট্রেইনার ও স্যান্ডবক্সেই প্রয়োজনীয় সবকিছু পাওয়া যায়। আসল সমস্যা কাঠামোর অভাব: কাঠামো না থাকলে তাত্ত্বিক পড়ায় আটকে থাকা বা বোঝা ছাড়া কমান্ড জমানো সহজ, আর প্রতিক্রিয়া না পেলে কেউ বলে না যে ইতিহাস অগোছালোভাবে রাখছেন।

কোর্স কাজে আসে, যখন দ্রুত ও ধারাবাহিকভাবে যেতে চান: প্রথম কমিট থেকে আসল রিপোজিটরিতে pull request পর্যন্ত, প্রতি ধাপে কাজসহ। কোর্স বাছার সময় সময়কালের দিকে নয়, অনুশীলনের অনুপাতের দিকে তাকান: কনফ্লিক্ট, ভুল বাতিল, দলগত কাজ ও শেষে একটি প্রকল্প — এগুলো আছে কি না দেখুন।

কতদিন লাগে Git শিখতে

স্তরযা পারবেনদৈনিক ১ ঘণ্টায় সময়
মূলকমিট, ইতিহাস, .gitignore৩–৫ দিন
কার্যকরব্রাঞ্চ, কনফ্লিক্ট, push/pull, pull request২–৩ সপ্তাহ
আত্মবিশ্বাসীভুল বাতিল, rebase, reflog, দলের প্রক্রিয়া১–২ মাস, বাস্তব অনুশীলনসহ

সংখ্যাগুলো আনুমানিক: নিয়মিততাই আসল ব্যাপার। প্রতিদিন এক ঘণ্টা মাসে একবারের দীর্ঘ মেরাথনের চেয়ে বেশি কাজ দেয়।

Git শেখার সাধারণ ভুল

  • শুধু GUI দিয়ে শেখা। গ্রাফিক ক্লায়েন্ট সুবিধাজনক, কিন্তু মডেল আড়াল করে। আগে কমান্ড-লাইন বুঝুন, তারপর পছন্দের টুল বাছুন।
  • ফ্ল্যাগ মুখস্থ করা। ধারণা মনে রাখতে হয়; ফ্ল্যাগ সবসময় -h-এ পাওয়া যায়।
  • ভাঙার ভয়। reset --hard করে reflog দিয়ে ফেরানোর আগ পর্যন্ত আপনি জানবেন না Git আপনাকে কতটা রক্ষা করে।
  • রিমোট রিপোজিটরি বাদ দেওয়া। push, pull ও pull request ছাড়া লোকাল Git শুধু অর্ধেক দক্ষতা।
  • "fix", "update" ধরনের কমিট। অর্থবহ বার্তা লেখার অভ্যাস শুরু থেকেই গড়ে তোলা সহজ।

শেখা পাকা করতে একটি চূড়ান্ত প্রকল্প

সেরা পরীক্ষা হলো দলগত উন্নয়নের অনুকরণ। একটি রিপোজিটরি বানান, তার main ব্রাঞ্চে সরাসরি push বন্ধ করুন, একজন সঙ্গীকে যুক্ত করুন অথবা দুটি অ্যাকাউন্ট থেকে কাজ করুন। প্রতিটি কাজ আলাদা ফিচার ব্রাঞ্চ ও রিভিউসহ pull request-এ হোক; অন্তত একবার কনফ্লিক্ট তৈরি করুন, একবার ভুল কমিট revert দিয়ে বাতিল করুন, এবং একটি রিলিজ ট্যাগ দিন।

এমন প্রকল্পের পর Git আর মন্ত্রের তালিকা থাকে না। গ্রাফ দেখা যায়, কমান্ডের পরিণতি বোঝা যায়, এবং সাক্ষাৎকারের প্রশ্নের জন্য প্রস্তুতি হয়।

সারসংক্ষেপ

কার্যকর Git শেখা ধাপে ধাপে হয়: মূল চক্র, ব্রাঞ্চ, সার্ভারের সঙ্গে কাজ, ভুল বাতিল, তারপর উন্নত সরঞ্জাম। ট্রেইনার গ্রাফ দেখতে শেখায়, Pro Git ও অফিসিয়াল ডকুমেন্টেশন গভীরতা দেয়, আর নিজস্ব স্যান্ডবক্স ও দলগত প্রকল্প জ্ঞানকে দক্ষতায় পরিণত করে। git init থেকে চূড়ান্ত প্রকল্পের pull request পর্যন্ত এই পথেই Skillaria-র Git কোর্স সাজানো।

সাধারণ প্রশ্ন

এক দিনে কি Git শেখা যায়?

এক দিনে মূল চক্র — init, add, commit, log ও push — শেখা সম্ভব। ব্রাঞ্চ, কনফ্লিক্ট ও ভুল বাতিলে আত্মবিশ্বাস আসতে কয়েক সপ্তাহ অনুশীলন লাগে।

Git শিখতে কি প্রোগ্রামিং জানা দরকার?

না। Git যেকোনো টেক্সট ফাইলের সঙ্গে কাজ করে, তাই নোট বা ডকুমেন্টেশন দিয়েও শেখা যায়। শুধু টার্মিনালে মৌলিক কাজের দক্ষতা প্রয়োজন।

Git-এর ডকুমেন্টেশন কি বাংলায় পাওয়া যায়?

কমান্ড রেফারেন্স git-scm.com-এ ইংরেজিতে। Pro Git বইয়ের একাধিক ভাষায় অনুবাদ আছে; কোন ভাষায় পাওয়া যায় তা git-scm.com-এর ভাষা তালিকায় দেখে নিন। ট্রেইনারগুলোর কিছু একাধিক ভাষা সমর্থন করে।

Git শেখার পর কী শিখবেন?

স্বাভাবিক পরবর্তী ধাপ CI/CD (GitHub Actions, GitLab CI), কোড রিভিউ ও দলগত প্রক্রিয়া। DevOps-এর জন্য অবকাঠামো-as-code-ও শিখুন, যা Git-এই সংরক্ষিত হয়।

ভিডিওতে বিষয়টি শিখুন

“শূন্য থেকে আত্মবিশ্বাসী ডেভেলপার পর্যন্ত গিট” কোর্সে বিষয়টি অনুশীলনসহ বিস্তারিত শেখানো হয়েছে।

কোর্সে যান