মূলঃ Git Fetch vs Pull: What's the Difference Between the Git Fetch and Git Pull Commands?

গিট pull এবং fetch হল বহুল ব্যবহৃত দুটি কমান্ড। চলুন কমান্ডদুটির মধ্যে পার্থক্য সম্পর্কে জানা যাক।

প্রসঙ্গের জন্য, এটা মনে রাখা দরকার যে আমরা সম্ভবত একটি ক্লোন রিপোতে কাজ করছি। ক্লোন হল অন্য একটি রিপজিটরির অনুরূপ। এটি মূলত আরেকজনের সোর্স কোড ডাউনলোড করে নিজের কাছে রাখার মতো।

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

এই কাজেই fetch এবং pull আমাদের সহায়তা করে।

git fetch কমান্ডটি আসল রিপজিটরি থেকে আপনার ক্লোনে সর্বশেষ হালনাগাদ মেটা-ডেটাগুলি নিয়ে আসে (কিন্তু কোন ফাইল ট্রান্সফার করে না। বরং দেখে যে আসল রিপজিটরিতে কোন পরিবর্তন এসেছে কি না যেটি ক্লোনে নেই)।

git pull একই কাজ করে কিন্তু তার সাথে রিমোট রিপজিটরি থেকে ফাইলের পরিবর্তনগুলিকে কপি করে ক্লোনে নিয়ে আসে।

উদাহরণস্বরূপঃ

git pull origin ankur bugfix

এখানে মনে রাখার বিষয় হল, আপনার ওয়ার্কস্টেশনে একটি প্রজেক্টের সাধারণত তিনটি কপি থাকে।

  • একটি কপি আপনার নিজের কমিট হিস্টরি সম্বলিত আপনার নিজস্ব কপি (এই পরিবর্তনগুলি ইতমধ্যে আপনার রিপোতে কমিট করা হয়ে গেছে)।
  • দ্বিতীয় কপিটি হল আপনার ওয়ার্কিং কপি যেখানে আপনি কাজ করছেন (এই পরিবর্তনগুলি আপনার রিপোতে এখনো কমিট করা হয় নি)।
  • তৃতীয় কপিটি হল রিমোট রিপজিটরিটি (যেটি থেকে আপনি আপনারটি ক্লোন করেছেন) এর লোকাল "cached" কপি।

git fetch ব্যবহার করে আপনি জানতে পারবেন যে আপনার সর্বশেষ পুল এর পর থেকে রিমোট রিপো/ব্রাঞ্চে কি কি পরিবর্তন এসেছে। পুল করার আগে পরিবর্তনগুলি দেখে নিলে বুঝা যায় আপনার বর্তমান ব্রাঞ্চ এবং ওয়ার্কিং কপিতে তো কোন ফাইল পরিবর্তন হচ্ছে কি না এবং যে কোন অনাকাঙ্ক্ষিত সমস্যা এড়িয়ে যাওয়া যায়।

git fetch    
git diff ...origin