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 আপডেট করা।

Share