git fetch বনাম git pull এর পার্থক্য
git fetch — শুধু ডাউনলোড করে, কিছু পরিবর্তন করে না
git fetch রিমোট রিপোজিটরি (যেমন GitHub) থেকে নতুন commit, branch, এবং tag-গুলো ডাউনলোড করে আনে, কিন্তু আপনার local working directory বা current branch-এ কোনো পরিবর্তন করে না। ডাউনলোড করা তথ্যগুলো জমা হয় remote-tracking branch-এ (যেমন origin/main)।
অর্থাৎ, git fetch চালানোর পর আপনি দেখতে পারবেন রিমোটে কী কী নতুন পরিবর্তন এসেছে, কিন্তু আপনার নিজের কোড অক্ষত থাকবে।
git fetch origin # রিমোট থেকে সব আপডেট আনে
git log main..origin/main # দেখুন রিমোটে কী নতুন commit আছে
git diff main origin/main # পার্থক্যগুলো পর্যালোচনা করুন
git merge origin/main # সন্তুষ্ট হলে নিজে merge করুন
git pull — ডাউনলোড করে এবং সাথে সাথে merge করে
git pull আসলে দুটি কমান্ডের সমন্বয়:
git pull = git fetch + git merge
এটি প্রথমে রিমোট থেকে পরিবর্তনগুলো ডাউনলোড করে (fetch), তারপর সাথে সাথে আপনার current branch-এ merge করে দেয়। ফলে আপনার working directory-র ফাইলগুলো সরাসরি আপডেট হয়ে যায়।
git pull origin main # fetch + merge একসাথে
git pull --rebase origin main # fetch + rebase (merge commit ছাড়া)
মূল পার্থক্য এক নজরে
| বিষয় | git fetch |
git pull |
|---|---|---|
| রিমোট থেকে ডাউনলোড | ✅ হ্যাঁ | ✅ হ্যাঁ |
| Local branch-এ merge | ❌ না | ✅ হ্যাঁ, স্বয়ংক্রিয়ভাবে |
| Working directory পরিবর্তন | ❌ না | ✅ হ্যাঁ |
| Merge conflict-এর সম্ভাবনা | নেই | আছে |
| নিরাপত্তা | বেশি নিরাপদ | তুলনামূলক ঝুঁকিপূর্ণ |
কখন কোনটি ব্যবহার করবেন?
git fetch ব্যবহার করুন যখন: আপনি merge করার আগে রিমোটের পরিবর্তনগুলো পর্যালোচনা (review) করতে চান। বিশেষ করে টিমে কাজ করার সময়, বা আপনার local-এ অসম্পূর্ণ কাজ থাকলে fetch দিয়ে আগে দেখে নেওয়া নিরাপদ।
git pull ব্যবহার করুন যখন: আপনি নিশ্চিত যে রিমোটের পরিবর্তনগুলো সরাসরি নিয়ে নিতে চান — যেমন সকালে কাজ শুরুর আগে main branch আপডেট করা।