গিটহাব কোড কোলাবোরেশন এবং রিপোজিটরি শেয়ারিংয়ে একটি অগ্রণী প্ল্যাটফর্ম হিসেবে উভয়েছে। গিটহাব মূলত একটি ভার্সন কন্ট্রোল সফটওয়্যার যা ডিস্ট্রিবিউটেড ভার্সন কন্ট্রোল এবং SCM (সোর্স কোড ম্যানেজমেন্ট) নিয়ন্ত্রণ দেয়। বড় বড় ব্যবসা এবং কোম্পানিগুলো বিশ্বব্যাপী এই প্ল্যাটফর্ম ব্যবহার করে।

এই প্ল্যাটফর্মগুলোর টেকনিক্যালিটি এবং সমস্যাগুলো থাকে। কোডাররা একটি নির্দিষ্ট সমস্যায় পড়েছে: গিটহাবে .gitignore কাজ করছে না। প্ল্যাটফর্ম বা तो .gitignore কে উপেক্ষা করছে বা আংশিকভাবে কাজ করছে। প্রতিটি কেস আলাদা সিনেরিও হওয়ায় সমস্যাটিও ভিন্ন হতে পারে। তবে নিচে দেওয়া সমাধানগুলো সর্বব্যাপী কাজ করবে।
.gitignore কী?
গিট (বা গিটহাব) আপনার ওয়ার্কিং ডিরেক্টরির প্রতিটি ফাইল দেখে। এটি প্রতিটি ফাইলকে তিনটি ক্যাটাগরিতে ভাগ করে:
- Tracked: এই ফাইলগুলো ইতিহাসে কমিট বা স্টেজড করা থাকছে।
- Untracked: এই ফাইলগুলো আগে কখনো স্টেজড বা কমিট করা হয়নি।
- Ignored: এই ফাইলগুলো ইউজার নিজে গিটকে উপেক্ষা করার জন্য বলে দিয়েছে।
উপেক্ষা করা ফাইলগুলো সিনেরিও অনুযায়ী ভিন্ন হয়, কিন্তু অধিকাংশ সময় মেশিন জেনারেটেড ফাইল বা বিল্ড আর্টিফ্যাক্ট। সাধারণ উদাহরণগুলো:
- কম্পাইলড কোড: সাধারণত .class, .pyc, .ccp এক্সটেনশন সহ ফাইল।
- হিডেন সিস্টেম ফাইল: সিস্টেম অপারেশনের জন্য ব্যবহৃত কিন্তু দৃষ্টিপথ থেকে লুকানো ফাইল, যেমন DS_Store বা Thumbs.db।
- বিল্ড আউটপুট ডিরেক্টরি: অধিকাংশ সময় /bin, /out ডিরেক্টরি।
- ডিপেন্ডেন্সি ক্যাশে: /node বা /packages মডিউল এর কন্টেন্ট।
- আইডিই কনফিগারেশন ফাইল: আপনার IDE সফটওয়্যার দ্বারা তৈরি বা পরিচালিত কনফিগ ফাইল।
- রানটাইমে জেনারেটেড ফাইল: কিছু প্রোগ্রাম রানটাইমে ফাইল তৈরি করে। যদি এমন কোড রান করা হয়, তবে ওয়ার্কিং ফোল্ডারে কিছু ফাইল জেনারেট হতে পারে যেগুলো গিটে উপেক্ষা করা যায়।
আপনি যে ফাইলগুলো উপেক্ষা করতে চান সেগুলো .gitignore নামে একটি স্পেশাল ফাইলে ট্র্যাক করা হয়, যা সাধারণত আপনার ওয়ার্কিং রিপোজিটরির রুটে থাকে। গিটহাবের অফিসিয়াল ডকুমেন্টেশন অনুযায়ী, .gitignore-র জন্য কোনো স্পেসিফিক কমান্ড নেই। বরং আপনাকে ম্যানুয়ালি ফাইলটি এডিট করতে হয়। .gitignore ফাইলে প্যাটার্ন থাকে যা আপনার ওয়ার্কিং রিপোজিটরির ফাইল নামের সাথে ম্যাচ করে এবং নির্ধারণ করে কোন ফাইল উপেক্ষা করা উচিত।
.gitignore কাজ না করার কারণ
.gitignore ফিচারটি নিখুঁত কাজ করছে, কিন্তু আপনি সেটি ঠিকমতো কনফিগার করেননি। আমাদের সার্ভে অনুযায়ী মডিউলটি ঠিকমতো কাজ করছে। কোডাররা এই ফিচার ব্যবহার করতে পারছে না কারণ তারা ফাইলটি ঠিকমতো কনফিগার করেননি বা অন্তর্নিহিত কোডে কিছু শর্ত পূরণ হচ্ছে না।
নিচে কিছু সমাধান দেওয়া হলো। প্রতিটি সমাধান আপনার কেসে প্রযোজ্য নাও হতে পারে, তাই শর্ত পূরণ না হলে পরবর্তী সমাধান ট্রাই করুন।
সমাধান ১: .gitignore ফাইল চেক করুন
একটি আকর্ষণীয় কেস দেখা গেলো যেখানে .gitignore ফাইলটি ভুল ফরম্যাটে তৈরি হয়েছিল। উইন্ডোজ ওএস-এ ডিফল্ট নোটপ্যাড দিয়ে ফাইল তৈরি করলে এই সমস্যা হয়। নোটপ্যাড ফাইলটি ইউনিকোডে লিখে, ANSI ফরম্যাটে না। এই সমাধানে নোটপ্যাডের পরিবর্তনগুলো .gitignore-এর সঠিক ফরম্যাটে সেভ করা হয়।
নোট: নোটপ্যাড দিয়ে নতুন ফাইল তৈরি করলে .txt এক্সটেনশনটি মুছে ফেলতে হবে।
- নোটপ্যাডে কোড বা পরিবর্তন লিখে File > Save As ক্লিক করুন।

- Encoding-এর সামনে ANSI বেছে নিন। .txt এক্সটেনশনটি মুছে ফাইলটির নাম '.gitignore' দিয়ে সঠিক ডিরেক্টরিতে সেভ করুন।

- ডিরেক্টরিতে গিয়ে চেক করুন সঠিক ফাইল তৈরি হয়েছে কিনা। গিট দিয়ে আবার টেস্ট করুন Ignore ফিচারটি কাজ করছে কিনা।
ডেভেলপাররা উইন্ডোজের ডিফল্ট নোটপ্যাড ব্যবহার না করাই ভালো। বরং প্রপার 'প্রোগ্রামারস' নোটপ্যাড ব্যবহার করুন, যেমন Notepad++। সেখানে এই সমস্যা নেই।
নোট: আপনার ফাইল যদি ইতিমধ্যে ইউনিকোড ফরম্যাটে সেভ করা থাকে, তবে গিট সেটি ঠিকমতো ডিটেক্ট করতে পারবে না। সেক্ষেত্রে কন্টেন্টগুলো ANSI ফরম্যাটে সেভ করুন।
সমাধান ২: উপেক্ষা করার ফাইলটি চেক করুন
.gitignore কাজ করার একটি শর্ত হলো আপনার ফাইলটি রিপোজিটরির অংশ নয়। এটি অত্যন্ত গুরুত্বপূর্ণ কারণ যদি ফাইলটি ইতিমধ্যে রিপোজিটরিতে অ্যাড করা থাকে, তবে .gitignore-এ এর নাম বা রুল থাকলেও গিট সেটি উপেক্ষা করতে পারবে না। গিট শুধু আনট্র্যাকড ফাইল উপেক্ষা করে।
আপনার স্ট্রাকচার (রিপোজিটরি) দেখুন এবং নিশ্চিত হন যে আপনি যে ফাইলটি উপেক্ষা করতে চাচ্ছেন সেটি রিপোজিটরিতে অ্যাড করা নেই। যদি অ্যাড করা থাকে, তবে সেটি রিপোজিটরিতে থেকে মুছে লেটেস্ট চেঞ্জ কমিট করার পর .gitignore-এ এর নাম যোগ করুন (অথবা ফাইল কন্টেন্ট কপি করে ডিলিট করার পর ভিন্ন নামে রিক্রিয়েট করুন)।
সমাধান ৩: রিপোজিটরিতে ফাইলগুলো রি-অ্যাড করুন
যদি .gitignore-এ রুল যোগ করার পরও ফাইলগুলো ইতিমধ্যে অ্যাড করা থাকে, তবে আমরা ফাইলগুলো রি-অ্যাড করব। রি-অ্যাড মানে গিটের ইনডেক্স থেকে সবকিছু রিমুভ করে আবার রিপোজিটরিতে অ্যাড করা। যখন সক্র্যাচ থেকে ফাইলগুলো অ্যাড করব, তখন .gitignore-এ দেওয়া রুলগুলো মেনে শুধু সঠিক ফাইলগুলো অ্যাড হবে।
নোট: এই সমাধান করার আগে কোডকहीं আরো এক জায়গায় ব্যাকআপ নিয়ে নিন। ব্যাকআপ রাখা সবসময় ভালো।
- নিচের কমান্ডটি চালান। এটি রিকার্সিভলি আপনার ফাইলগুলোর পাথ গিট ইনডেক্স থেকে আনস্টেজ ও রিমুভ করবে।
git rm -r --cached .
- এরপর নিচের কমান্ডটি চালান। এটি সব ফাইল আবার অ্যাড করবে এবং .gitignore-র রুল মেনে শুধু সঠিক ফাইলগুলো আপডেট হবে।
git add .
- এখন নিচের কোড দিয়ে সব ফাইল ইনডেক্সে কমিট করুন:
git commit -m ".gitignore is now working"
এখন ফাইলগুলো চেক করুন এবং দেখুন সমস্যা সমাধান হয়েছে কিনা এবং .gitignore আবার ব্যবহার করা যাচ্ছে কিনা।