GitAdvanced
Rebase ও Interactive Rebase
git rebase কী, কেন ব্যবহার হয়, interactive squash — বাংলায়।
16টি অংশবাংলা ভাষায়
Rebase কী?
Rebase হলো আপনার branch-এর commit গুলো অন্য একটি বেস-এর উপরে সরিয়ে নেওয়া। এটি ইতিহাসকে linear (সরলরেখার মতো) রাখে।
Before / Afterbash
bash
আগে: main ●──●──A
feature └──●──●
পরে: main ●──●──A
feature └──●──● (A-এর উপরে বসে গেছে)রিবেস করা
git switch feature/x
git rebase mainRebase vs Merge
| বিষয় | Merge | Rebase |
|---|---|---|
| ইতিহাস | branches + merge commit | যদিও linear |
| ইতিহাস নিরাপত্তা | আসল থাক | rewrite করে |
| public branch | নিরাপদ | বিপজ্জনক |
| যখন ব্যবহার | দলগত, main merge | আলাদা feature সাফ করার আগে |
Interactive Rebase (সবচেয়ে দরকারি)
git rebase -i HEAD~3
# একটি editor খুলবে — তিনটি commit তালিকাভুক্ত
pick 1a2b3c feat: add login
pick 4d5e6f feat: tweak login
pick 7g8h9i fix: typoপ্রধান অপশন
pick— commit রাখুন যেমন আছেreword— message পরিবর্তন করুনedit— commit content পরিবর্তন করুনsquash— আগের commit-এ মিলিয়ে নিনfixup— squash কিন্তু message না রেখেdrop— commit বাদ দিন
Squash উদাহরণ
# ইতিহাস
pick 1a2b3c feat: add login
squash 4d5e6f tweak: fix style
squash 7g8h9i fix: typo
# Result — একটি clean commit:
# 9x8y7z feat: add loginযেসব ক্ষেত্রে rebase ব্যবহার করা হয়
- main-এর নতুন commit ডেকে নেওয়া (ফিচার সতেজ রাখা)
- একাধিক messy commit clean করা (squash)
- PR merge-এর আগে প্রধান ইতিহাস ক্রমে রাখা
- font রূপে staged snapshot
Golden Rule
আরও কিছু public branch-এ কখনো rebase নয়। একবার commit push হয়ে গেলে সেটি অন্যের বেস হয়ে গেছে; সেখানে rewrite মানে সবার গণ্ডগোল।
শেষ প্যারায় নিজে practice করুন — কোড কপি করে নিজের এডিটরে চালিয়ে দেখুন।