git add . বনাম git add -A বনাম git add -u — পার্থক্য

এই তিনটি কমান্ডই ফাইল staging area-তে যোগ করে, কিন্তু কোন ধরনের পরিবর্তন এবং কোন জায়গা থেকে stage করবে — সেখানেই পার্থক্য।

প্রথমে বুঝতে হবে, একটি ফাইলের পরিবর্তন তিন ধরনের হতে পারে:

  • নতুন ফাইল (new/untracked) — Git আগে কখনো ট্র্যাক করেনি
  • পরিবর্তিত ফাইল (modified) — আগে থেকে ট্র্যাক করা ফাইলে পরিবর্তন
  • মুছে ফেলা ফাইল (deleted) — ট্র্যাক করা ফাইল ডিলিট করা হয়েছে

১. git add . — বর্তমান ডিরেক্টরির সব পরিবর্তন

git add . বর্তমান ডিরেক্টরি এবং তার ভেতরের সব সাবডিরেক্টরির নতুন, পরিবর্তিত, এবং মুছে ফেলা — সব ধরনের পরিবর্তন stage করে।

git add .    # current directory থেকে নিচের দিকে সবকিছু

মনে রাখার বিষয়: এটি শুধু আপনি এখন যে ফোল্ডারে আছেন সেখান থেকে নিচের দিকে কাজ করে। আপনি যদি প্রজেক্টের কোনো সাবফোল্ডারে (যেমন src/main/java/) থেকে git add . চালান, তাহলে প্রজেক্টের অন্য জায়গার (যেমন root-এর pom.xml) পরিবর্তন stage হবে না

২. git add -A — পুরো রিপোজিটরির সব পরিবর্তন

git add -A (বা git add --all) পুরো রিপোজিটরির সব জায়গা থেকে নতুন, পরিবর্তিত, এবং মুছে ফেলা — সব পরিবর্তন stage করে, আপনি যে ফোল্ডারেই থাকুন না কেন

git add -A    # পুরো রিপোজিটরির সবকিছু, যেখান থেকেই চালান

এটি সবচেয়ে "সম্পূর্ণ" কমান্ড — কোনো পরিবর্তন বাদ পড়বে না।

৩. git add -u — শুধু ট্র্যাক করা ফাইলের পরিবর্তন

git add -u (বা git add --update) শুধু আগে থেকে ট্র্যাক করা ফাইলগুলোর পরিবর্তন stage করে — অর্থাৎ modified এবং deleted ফাইল। নতুন (untracked) ফাইল stage করে না।

git add -u    # শুধু modified + deleted, নতুন ফাইল বাদ

ব্যবহারিক উদাহরণ: ধরুন আপনি কয়েকটি বিদ্যমান Java ক্লাসে refactoring করেছেন, কিন্তু পাশাপাশি কিছু পরীক্ষামূলক (experimental) নতুন ফাইলও বানিয়েছেন যেগুলো এখনই commit করতে চান না। তখন git add -u চালালে শুধু refactoring-এর পরিবর্তনগুলো stage হবে, নতুন ফাইলগুলো untracked অবস্থায় থেকে যাবে।

তুলনামূলক ছক এক নজরে

পরিবর্তনের ধরন git add . git add -A git add -u
নতুন (untracked) ফাইল ✅ হ্যাঁ ✅ হ্যাঁ ❌ না
পরিবর্তিত (modified) ফাইল ✅ হ্যাঁ ✅ হ্যাঁ ✅ হ্যাঁ
মুছে ফেলা (deleted) ফাইল ✅ হ্যাঁ ✅ হ্যাঁ ✅ হ্যাঁ
কার্যক্ষেত্র (scope) বর্তমান ডিরেক্টরি ও নিচে পুরো রিপোজিটরি পুরো রিপোজিটরি

সংক্ষেপে: প্রজেক্টের root ফোল্ডার থেকে চালালে git add . এবং git add -A কার্যত একই ফলাফল দেয়। পার্থক্য দেখা যায় সাবফোল্ডার থেকে চালালে — . শুধু সেই ফোল্ডারের নিচে কাজ করে, -A পুরো রিপোজিটরিতে।

Share