প্রোগ্রামিং শেখার পথে পা রাখলেই যে টুলটির নাম বারবার শোনা যায়, সেটি হলো GitHub। এটি শুধু কোড রাখার জায়গা নয়, বরং আধুনিক সফটওয়্যার ডেভেলপমেন্টের কেন্দ্রবিন্দু। আপনি যদি একা কাজ করতে চান বা হাজার হাজার ডেভেলপারের সঙ্গে মিলে ওপেন সোর্স প্রজেক্টে কন্ট্রিবিউট করতে চান—GitHub ছাড়া তা যেন কল্পনাই করা যায় না। এই ব্লগ পোস্টে আমরা অত্যন্ত সহজভাবে, সম্পূর্ণ বাংলায়, GitHub-এর এ টু জেড ব্যবহার শিখব। কেবল বাটনে ক্লিক করাই নয়, বরং প্রতিটি ফিচারের পেছনের ধারণা ও বাস্তব জীবনে প্রয়োগ বুঝব, যেন আপনি নিজে যেকোনো প্রজেক্ট ম্যানেজমেন্টে দক্ষ হয়ে উঠতে পারেন।
১. GitHub কী এবং কেন ব্যবহার করবেন
GitHub হলো একটি ওয়েব-ভিত্তিক প্ল্যাটফর্ম যা Git ভার্সন কন্ট্রোল সিস্টেমের ওপর তৈরি। সহজ ভাষায়, এটি আপনার প্রজেক্টের ফাইলগুলোর পরিবর্তনের ইতিহাস সংরক্ষণ, বিশ্বের যেকোনো প্রান্ত থেকে কোড একসেস, টিম মেম্বারদের সঙ্গে সহযোগিতা এবং কোড পর্যালোচনার অবিশ্বাস্য সুবিধা দেয়। GitHub কে আপনি “কোডের সামাজিক মাধ্যম” বলতে পারেন—এখানে ডেভেলপাররা নিজেদের প্রজেক্ট শেয়ার করেন, অন্যের প্রজেক্ট ফর্ক করেন, কন্ট্রিবিউট করেন এবং কমিউনিটি গড়ে তোলেন।
Git বনাম GitHub:
Git একটি লোকাল ভার্সন কন্ট্রোল সিস্টেম, যা আপনার কম্পিউটারে ইনস্টল করেন এবং কমান্ড লাইনে চালান।
GitHub হলো একটি ক্লাউড-ভিত্তিক পরিষেবা, যেখানে Git রিপোজিটরিগুলো হোস্ট করা হয় এবং সুন্দর গ্রাফিকাল ইন্টারফেস ও কোলাবোরেশন টুল যুক্ত থাকে। Git ছাড়া GitHub অচল; কিন্তু GitHub ছাড়াও Git ব্যবহার করে লোকালি ভার্সন কন্ট্রোল বজায় রাখা যায়। তবু প্রায় সব আধুনিক টিম GitHub ব্যবহার করে, কারণ এটি সহজ, দৃষ্টিনন্দন এবং দারুণ সব ফিচারে ভরপুর।
কেন GitHub শিখবেন?
আপনার সব প্রজেক্টের কোড ক্লাউডে সুরক্ষিত থাকবে।
যেকোনো সময় পুরোনো ভার্সনে ফিরে যাওয়া যাবে (ভার্সন কন্ট্রোল)।
টিমের সবাই একই প্রজেক্টে একসঙ্গে কাজ করতে পারবে, মেশানো গণ্ডগোল হবে না।
ওপেন সোর্স জগতে কন্ট্রিবিউট করে সম্প্রদায়ের অংশ হওয়া যায়।
নিয়োগকর্তারা GitHub প্রোফাইল দেখে আপনার দক্ষতা যাচাই করেন।
২. প্রাথমিক প্রস্তুতি: অ্যাকাউন্ট তৈরি ও Git সেটআপ
২.১ GitHub অ্যাকাউন্ট তৈরি
github.com-এ গিয়ে সাইন-আপ বাটনে ক্লিক করুন। ইমেইল, পাসওয়ার্ড ও ইউজারনেম দিয়ে ফ্রি অ্যাকাউন্ট তৈরি হয়ে যাবে। বিনামূল্যের প্ল্যানে আনলিমিটেড পাবলিক ও প্রাইভেট রিপোজিটরি, মাসে ২,০০০ মিনিটের অ্যাকশন রানার—শিক্ষার্থীদের জন্য এর চেয়ে ভালো কিছু হতে পারে না। GitHub Education প্যাক চেক করলে শিক্ষার্থী হিসেবে আরও অনেক প্রিমিয়াম ফিচার ফ্রি পাওয়া যাবে।
২.২ Git ইনস্টল ও কনফিগারেশন
Git-এর লেটেস্ট ভার্সন git-scm.com থেকে ডাউনলোড করে ইন্সটল করুন। ইন্সটল হয়ে গেলে টার্মিনাল (বা কমান্ড প্রম্পট) ওপেন করে এই কমান্ড দুটি দিন:
git config --global user.name "আপনার নাম" git config --global user.email "আপনার ইমেইল"
এতে আপনার নাম ও ইমেইল যুক্ত হবে, যা প্রতিটি কমিটের সঙ্গে স্বাক্ষর হিসেবে থাকে। GitHub-এ রিপোজিটরি ক্লোন বা পুশ করতে গেলে অথেনটিকেশন দরকার হবে। বর্তমানে পাসওয়ার্ডের পরিবর্তে Personal Access Token অথবা SSH Key ব্যবহার করা হয়। SSH Key জেনারেট করার জন্য:
ssh-keygen -t ed25519 -C "আপনার ইমেইল"
তারপর .ssh/id_ed25519.pub ফাইলের কনটেন্ট কপি করে GitHub Settings → SSH and GPG keys-এ যোগ করুন।
৩. মৌলিক ধারণা: রিপোজিটরি, ব্রাঞ্চ, কমিট ও পুল রিকোয়েস্ট
৩.১ রিপোজিটরি (Repository)
রিপোজিটরি
বা সংক্ষেপে “রিপো” হলো একটি প্রজেক্টের সব ফাইল ও তাদের পরিবর্তনের
ইতিহাস সংরক্ষণের ধারক। এটি একটি ফোল্ডারের মতো, কিন্তু এর ভেতরে .git
নামক লুকানো ফোল্ডারে সম্পূর্ণ ভার্সন হিস্ট্রি জমা থাকে। GitHub-এ
রিপোজিটরি হয় পাবলিক (যে কেউ দেখতে পাবে), নতুবা প্রাইভেট (শুধু
আমন্ত্রিতরা দেখতে পারবে)।
৩.২ কমিট (Commit)
কমিট হলো ফাইলের পরিবর্তনের একটি “স্ন্যাপশট” বা স্থিরচিত্র। যখনই আপনি ফাইলে কিছু এডিট, ডিলিট বা অ্যাড করেন এবং পরিবর্তনগুলো সেভ করতে চান, তখন একটি কমিট তৈরি করেন। প্রতিটি কমিটে একটি ইউনিক আইডি (SHA hash) ও একটি বার্তা থাকে, যা বলে কী পরিবর্তন হলো। ভালো কমিট বার্তা লেখা পেশাদারিত্বের লক্ষণ।
৩.৩ ব্রাঞ্চ (Branch)
ব্রাঞ্চ মানে রিপোজিটরির একটি স্বতন্ত্র ধারা। ধরুন, আপনার একটি ওয়েবসাইট প্রজেক্ট আছে। এখন আপনি একটি “ল্যান্ডিং পেজ” ফিচার যোগ করতে চান। আপনি মূল কোডের (main বা master) একটি কপি ব্রাঞ্চ তৈরি করে তাতে কাজ করবেন; মূল ভার্সনে কোনো ঝুঁকি নেবেন না। কাজ শেষ হলে সেই ব্রাঞ্চটিকে মূল ব্রাঞ্চের সঙ্গে একীভূত (merge) করে দেবেন।
৩.৪ পুল রিকোয়েস্ট (Pull Request)
পুল রিকোয়েস্ট বা PR হলো একটি প্রস্তাব, যেখানে আপনি বলছেন “আমার ব্রাঞ্চের পরিবর্তনগুলো মূল ব্রাঞ্চে যোগ করার জন্য অনুরোধ করছি”। টিম মেম্বাররা এই PR-এ কোড রিভিউ করেন, মন্তব্য করেন, প্রয়োজনে পরিবর্তন চান, সবশেষে PR মার্জ করলে চেঞ্জগুলো মূল প্রজেক্টের অংশ হয়ে যায়। ওপেন সোর্স কন্ট্রিবিউশনের প্রাণই হলো এই PR।
৪. নতুন রিপোজিটরি তৈরি এবং প্রথম প্রজেক্ট আপলোড
চলুন হাতেকলমে শিখি। ধরা যাক আপনার কম্পিউটারে “hello-world” নামে একটি ফোল্ডারে index.html ফাইল আছে। এটিকে GitHub-এ রাখতে চান।
ধাপ ১: GitHub-এ রিপোজিটরি তৈরি
GitHub-এর ডান পাশের ‘+’ বাটনে ক্লিক করে “New repository” সিলেক্ট করুন। নাম দিন hello-world,
বর্ণনা দিন, পাবলিক রাখুন, “Add a README file” অপশনটি চেক না করাই ভালো
যদি লোকাল প্রজেক্ট আগে থেকে থাকে। “Create repository” ক্লিক করুন।
স্ক্রিনে কমান্ডের নির্দেশনা দেখাবে।
ধাপ ২: লোকাল ডিরেক্টরিকে Git রিপো বানানো ও পুশ করা
টার্মিনালে আপনার প্রজেক্ট ফোল্ডারে যান:
cd hello-world git init git add . git commit -m "প্রথম কমিট: বেসিক HTML ফাইল"
এখন GitHub-এর রিমোট URL যোগ করে পুশ করুন:
git remote add origin git@github.com:your-username/hello-world.git git branch -M main git push -u origin main
ধাপ ৩: ব্রাউজারে চেক
আপনার GitHub রিপোজিটরি পেজ রিফ্রেশ করলেই index.html ও অন্যান্য ফাইল চলে আসবে। এটাই আপনার প্রথম সফল পুশ।
মনে রাখবেন:
git addদিয়ে স্টেজিং এরিয়ায় ফাইল আনা হয়।git commitদিয়ে সংরক্ষণ করা হয়।git pushদিয়ে রিমোট রিপোতে আপলোড করা হয়।
৫. ব্রাঞ্চিং ও মার্জিং: সমান্তরাল কাজের মূলমন্ত্র
সহজ একটি ফিচার সংযোজনের মাধ্যমে ব্রাঞ্চিং দেখা যাক। ধরা যাক আপনি contact পেজ তৈরি করবেন।
প্রথমে দেখে নিন আপনি কোন ব্রাঞ্চে আছেন: git branch। নতুন ব্রাঞ্চ তৈরি করে সেখানে সুইচ করুন:
git checkout -b add-contact-page
এখন contact.html ফাইল তৈরি করুন, কিছু কন্টেন্ট দিন। তারপর:
git add contact.html git commit -m "Contact পেজ যোগ করা হলো" git push -u origin add-contact-page
এবার GitHub-এ রিপোজিটরিতে গেলে “add-contact-page” ব্রাঞ্চ দেখা যাবে। সেখান থেকে “Compare & pull request” বাটনে ক্লিক করলে একটি PR তৈরি হবে। মার্জ অপশন বেছে নিয়ে “Merge pull request” করলে মূল main ব্রাঞ্চে contact পেজ যুক্ত হবে। এরপর লোকাল main ব্রাঞ্চকে আপডেট করতে:
git checkout main git pull origin main
মার্জ কনফ্লিক্ট
কখনো কখনো দুইজন একই ফাইলের একই অংশে পরিবর্তন আনলে Git বুঝতে পারে না কোনটি রাখবে। তখন মার্জ কনফ্লিক্ট হয়। ফাইলটি ওপেন করলে <<<<<<<, =======, >>>>>>> চিহ্ন দিয়ে উভয় সংস্করণ দেখায়। ম্যানুয়ালি ঠিক করে ফাইল সেভ, তারপর git add ও git commit করলে কনফ্লিক্ট রিজলভ হয়। প্রথম দিকে কনফ্লিক্ট ভীতিকর মনে হলেও এটি খুবই স্বাভাবিক প্রক্রিয়া, অভিজ্ঞতা বাড়লে সহজ হয়ে যাবে।
৬. পুল রিকোয়েস্ট: রিভিউ ও একীভূত করার শিল্প
PR-এর পেজে আপনি টাইটেল ও বিবরণ দেবেন। বিবরণে কী কাজ করা হয়েছে, তা স্পষ্টভাবে লিখুন। যদি কোনো ইস্যু সলভ করে, তবে “Closes #12” লিখলে তা ইস্যুটিকে স্বয়ংক্রিয়ভাবে বন্ধ করে দেবে। ডানপাশে রিভিউয়ার, অ্যাসাইনি, লেবেল, মাইলস্টোন যোগ করতে পারেন।
কোড রিভিউ:
টিমের
অন্য সদস্যরা PR-এ এসে লাইনে লাইনে কমেন্ট করতে পারেন। তারা “Approve” বা
“Request changes” দিতে পারেন। অ্যাপ্রুভাল পেলে এবং সব চেক (টেস্ট) পাশ
করলে “Merge pull request” বাটন সবুজ হয়। সাধারণত তিন ধরনের মার্জ স্টাইল
আছে:
Merge commit: আলাদা একটি মার্জ কমিট যোগ করে, ইতিহাস অক্ষুণ্ণ রাখে।
Squash and merge: সব কমিটকে একটি কমিটে সংকুচিত করে।
Rebase and merge: কমিটগুলোকে মূল ব্রাঞ্চের ওপর রিবেস করে।
বড় প্রজেক্টে রিভিউ ছাড়া সরাসরি main-এ পুশ করা নিষিদ্ধ থাকে। “Branch protection rules” ব্যবহার করে আপনি নিশ্চিত করতে পারেন যে PR ছাড়া কেউ main-এ পুশ করতে না পারে।
৭. ইস্যু ও প্রজেক্ট ম্যানেজমেন্ট
ইস্যু (Issue) হলো কোনো কাজ, বাগ রিপোর্ট, ফিচার রিকোয়েস্ট বা আলোচনা শুরু করার জায়গা। রিপোজিটরির “Issues” ট্যাবে গিয়ে নতুন ইস্যু তৈরি। টাইটেল, বিবরণ, লেবেল (bug, enhancement, documentation ইত্যাদি) যোগ করতে পারেন। টেক্সট বক্স মার্কডাউন সাপোর্ট করে, তাই চেকলিস্টও বানানো যায়:
- [ ] লগইন পেজ তৈরি - [ ] API ইন্টিগ্রেশন
ইস্যুতে মেন্টশন (@username) দিয়ে কাউকে যুক্ত করলে তিনি নোটিফিকেশন পাবেন।
প্রজেক্ট বোর্ড (Projects):
GitHub-এ
আগে কানবান বোর্ড ছিল, এখন তা আরও আধুনিক “Projects” ফিচারে রূপ নিয়েছে।
টেবিল, বোর্ড, রোডম্যাপ ইত্যাদি ভিউতে ইস্যু ও PR-কে কার্ড হিসেবে সাজানো
যায়। স্ট্যাটাস যেমন “Todo”, “In Progress”, “Done” অনুযায়ী কাজ
ব্যবস্থাপনা করা যায়। এটি প্রোজেক্ট ম্যানেজমেন্ট সফটওয়্যারের মতো কাজ করে,
কিন্তু কোডের সঙ্গে সম্পূর্ণ ইন্টিগ্রেটেড।
৮. ওপেন সোর্স ও টিম কলাবরেশন
ওপেন সোর্সে কন্ট্রিবিউট করা একটি অসাধারণ শিক্ষা। তাতে আপনার কোড সারা বিশ্বের মানুষের সামনে আসে, এবং আপনি বাস্তব চাহিদা বোঝেন। অন্য কারও রিপোজিটরিতে কন্ট্রিবিউট করার উপায়:
ফর্ক (Fork): আগ্রহের রিপোটি আপনার অ্যাকাউন্টে ফর্ক করুন। এটি একটি সম্পূর্ণ কপি, যাতে আপনার পূর্ণ নিয়ন্ত্রণ থাকে।
ক্লোন ও ব্রাঞ্চ: ফর্ক করা রিপো ক্লোন করুন। নতুন ব্রাঞ্চ তৈরি করে আপনার পরিবর্তন করুন।
পুশ ও PR: আপনার ফর্কে পুশ করে মূল রিপোজিটরিতে পুল রিকোয়েস্ট পাঠান। ওই প্রজেক্টের মেইনটেইনার আপনার PR রিভিউ করবেন এবং মার্জ করবেন।
টিমওয়ার্কে সহজেই কোলাবোরেটর যুক্ত করতে Settings → Collaborators এ গিয়ে ইউজারনেম যোগ করুন। বড় টিমে অর্গানাইজেশন তৈরি করে দলীয়ভাবে রিপো ম্যানেজমেন্ট করা হয়। “CODEOWNERS” ফাইল ব্যবহার করে নির্দিষ্ট ফাইলের দায়িত্ব নির্দিষ্ট ব্যক্তিকে দেওয়া যায়।
৯. GitHub Actions: অটোমেশনের জাদু
GitHub Actions আপনাকে CI/CD পাইপলাইন তৈরি করতে দেয় একটি কনফিগারেশন ফাইলের মাধ্যমে। .github/workflows/
ফোল্ডারে YAML ফাইল লিখে আপনি যখনই কেউ পুশ বা PR তৈরি করবে, তখনই
অটোমেটিক টেস্ট রান, লিন্টিং, ডেপ্লয়মেন্ট চালাতে পারেন। একটি সরল
ওয়ার্কফ্লো উদাহরণ Node.js প্রজেক্টের জন্য:
name: Node.js CI on: [push, pull_request] jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: 18 - run: npm ci - run: npm test
এই ফাইলটি রিপোতে থাকলে প্রতিবার পুশ বা PR-এ অটোমেটিক টেস্ট চালাবে এবং ফলাফল সবুজ টিক বা লাল ক্রস আকারে দেখাবে। মার্কেটপ্লেসে হাজারো প্রি-বিল্ট অ্যাকশন আছে যা যেকোনো কাজের জন্য ব্যবহার করা যায়।
১০. GitHub Pages: বিনামূল্যে ওয়েবসাইট প্রকাশ
স্ট্যাটিক
ওয়েবসাইট (HTML/CSS/JS) অথবা জেকিল, হুগো ইত্যাদির মতো স্ট্যাটিক সাইট
জেনারেটরের আউটপুট হোস্ট করার সবচেয়ে সহজ উপায় হলো GitHub Pages।
রিপোজিটরির Settings → Pages-এ গিয়ে ব্রাঞ্চ ও ফোল্ডার নির্ধারণ করলেই https://username.github.io/repository লিঙ্কে ওয়েবসাইট লাইভ হয়ে যায়। ব্যক্তিগত পোর্টফোলিও, প্রজেক্ট ডকুমেন্টেশন বা ব্লগের জন্য এটি আদর্শ।
১১. নিরাপত্তা ও বেস্ট প্র্যাকটিস
README.md: প্রতিটি রিপোর রুটে একটি README ফাইল রাখুন। এতে প্রজেক্টের পরিচিতি, ইন্সটলেশন গাইড, ব্যবহারবিধি লিখুন। মার্কডাউনে লেখা এই ফাইলটি GitHub প্রোফাইল ও রিপো পেজে সুন্দরভাবে দেখায়।
.gitignore: সংবেদনশীল ফাইল (যেমন .env, node_modules, ডাটাবেস ফাইল) রিপোতে আপলোড করা থেকে বিরত রাখতে .gitignore ফাইল তৈরি করুন। ভাষা অনুযায়ী টেমপ্লেট https://github.com/github/gitignore থেকে পাওয়া যায়।
লাইসেন্স: ওপেন সোর্স প্রজেক্টের জন্য MIT, Apache 2.0, GPL ইত্যাদি লাইসেন্স যোগ করুন। লাইসেন্স ছাড়া প্রজেক্টে আইনি জটিলতা থাকতে পারে।
সিক্রেটস ম্যানেজমেন্ট:
API কী বা পাসওয়ার্ড কখনোই কোডে হার্ডকোড করবেন না। Settings → Secrets
and variables → Actions এ গিয়ে সিক্রেট সংরক্ষণ করুন, Actions
ওয়ার্কফ্লোতে ${{ secrets.NAME }} দিয়ে ব্যবহার করুন।
ডিপেন্ডাবট ও সিকিউরিটি আপডেট: GitHub স্বয়ংক্রিয়ভাবে ডিপেন্ডেন্সি স্ক্যান করে নিরাপত্তা দুর্বলতা চিহ্নিত করলে আপনাকে PR পাঠিয়ে দিতে পারে (Dependabot alerts)। এটি অ্যাকটিভ রাখা বুদ্ধিমানের কাজ।
GitHub Desktop ও অন্যান্য টুল
যাঁরা কমান্ড লাইন এড়িয়ে চলতে চান, তাঁদের জন্য GitHub Desktop একটি চমৎকার গ্রাফিক্যাল অ্যাপ্লিকেশন। এটি ম্যাক ও উইন্ডোজে চলে। সহজ ড্র্যাগ-অ্যান্ড-ড্রপ ইন্টারফেসে কমিট, পুশ, পুল, ব্রাঞ্চ সুইচ, PR ক্রিয়েট—সব করা যায়। তবে ভার্সন কন্ট্রোলের ভেতরের কাজ বোঝার জন্য টার্মিনাল কমান্ড শেখার পরামর্শ দেওয়া হয়, তাতে ডেস্কটপ অ্যাপ আরও স্বচ্ছন্দ লাগে।
এছাড়া ভিজুয়াল স্টুডিও কোড, জেটব্রেইন্সের আইডিইগুলোতে সরাসরি GitHub ইন্টিগ্রেশন আছে, যেখানে কোড রিভিউ, ইনলাইন ব্লেম ইত্যাদি দেখা যায়। মোবাইলের জন্য GitHub অ্যাপ ব্যবহারে আপনি চলতে ফিরতে ইস্যু ও PR ম্যানেজ করতে পারেন।
GitHub শেখা মানে কেবল একটি টুল আয়ত্ত করা নয়, বরং আধুনিক সফটওয়্যার ইঞ্জিনিয়ারিং সংস্কৃতির দরজায় কড়া নাড়া। এই পোস্টে আমরা GitHub ব্যবহারের সমস্ত প্রয়োজনীয় ধাপ—রিপো তৈরি, কমিট, ব্রাঞ্চিং, পুল রিকোয়েস্ট, ইস্যু, অ্যাকশন ও পেজেস নিয়ে বিস্তারিত জেনেছি। এখন কেবল আপনার হাত লাগানো বাকি। একটি ছোট প্রজেক্ট বানিয়ে আজই GitHub-এ পুশ করুন। নিজের README সুন্দর করে লিখুন, তারপর আস্তে আস্তে ওপেন সোর্স প্রজেক্টে কন্ট্রিবিউট করা শুরু করুন। আপনার শেখার গতি বাড়বে বহুগুণে, আর প্রোফাইলে জমা হবে প্রোগ্রামিং-জীবনের সবুজ পাথেয়।
আরও পড়ুন -
FAQ
প্রশ্ন: GitHub-এ রিপোজিটরির সাইজ লিমিট কত?
উত্তর:
বিনামূল্যে অ্যাকাউন্টে প্রতি রিপো ১ GB-র বেশি না হওয়াই ভালো, আর ফাইলের
সাইজ ১০০ MB-র নিচে রাখতে বলা হয়। বড় ফাইলের জন্য Git LFS (Large File
Storage) ব্যবহার করতে পারেন।
প্রশ্ন: পাবলিক রিপোর সব কোড কী সবাই চুরি করতে পারবে?
উত্তর:
পাবলিক রিপোতে আপনার কোড সবার কাছে প্রদর্শিত হয়, তবে লাইসেন্স অনুযায়ী
কপিরাইট সুরক্ষিত থাকে। আপনি যদি চান কেউ ব্যবহার করতে না পারে, তাহলে
লাইসেন্স ছাড়া রাখবেন অথবা প্রাইভেট রিপো বেছে নেবেন।
প্রশ্ন: GitHub-এ প্রাইভেট রিপো কতজন কোলাবোরেটর অ্যাড করা যায়?
উত্তর: ফ্রি প্ল্যানে আনলিমিটেড কোলাবোরেটর রাখতে পারেন প্রাইভেট রিপোতেও।
প্রশ্ন: Pull Request আর Issue-এর মধ্যে পার্থক্য কী?
উত্তর:
Issue হলো আলোচনা ও কাজ ট্র্যাক করার মাধ্যম; Pull Request হলো কোডের
পরিবর্তন একীভূত করার প্রস্তাব। একটি PR প্রায়ই একটি ইস্যুকে সমাধান করে।
প্রশ্ন: লোকালে কোনো ফাইল ভুলে কমিট করেছি, কীভাবে বাতিল করব?
উত্তর: git reset HEAD~1 দিয়ে শেষ কমিট আন-ডু করতে পারেন, কিন্তু পুশ করার আগেই এটি নিরাপদ। পুশ করে ফেললে git revert ব্যবহার করে অতিরিক্ত একটি কমিট করুন যা আগের পরিবর্তন উল্টে দেবে, এতে ইতিহাস অক্ষুণ্ন থাকে।
