ম্যাকে জেনারেট করা ফাইলগুলোকে সোর্স কোড থেকে আলাদা রাখতে, রিপোজিটরির ভেতরে একটি নির্দিষ্ট আউটপুট ফোল্ডার তৈরি করুন, তারপর সেই ফোল্ডারটি রিপোজিটরির .gitignore ফাইলে যুক্ত করুন। ফাইন্ডার আপনাকে ফোল্ডার তৈরি এবং পরিদর্শন করতে সাহায্য করে; গিটের ইগনোর রুলগুলো জেনারেট করা আউটপুটকে ভবিষ্যতের কমিটগুলো থেকে বাদ রাখে। এটি এমন ফাইলগুলোর ক্ষেত্রে কাজ করে যা গিট আগে থেকেই ট্র্যাক করছে না, তাই এর ওপর নির্ভর করার আগে রিপোজিটরির স্ট্যাটাস যাচাই করে নিন।

ফাইন্ডারে একটি আউটপুট ফোল্ডার তৈরি করুন

ফাইন্ডারে রিপোজিটরি ফোল্ডারটি খুলুন এবং File > New Folder অথবা Shift-Command-N ব্যবহার করে জেনারেট করা আউটপুটের জন্য একটি ফোল্ডার তৈরি করুন, যেমন build বা dist। সোর্স ফাইলগুলোকে তাদের নিজস্ব স্থানে রাখুন এবং সেই ফোল্ডারে আউটপুট লেখার জন্য আপনার বিল্ড টুলটি কনফিগার করুন। ফোল্ডারের নামটি টুলের আসল আউটপুট পাথের সাথে মিলতে হবে; কেবল একটি ফোল্ডার তৈরি করলেই বিল্ডের গতিপথ পরিবর্তিত হয় না। অ্যাপল তাদের ফাইন্ডারে ফাইল সাজানোর গাইড-এ ফাইন্ডারের ফোল্ডার তৈরির ধাপগুলো নথিভুক্ত করেছে।

কোন ফাইলগুলো জেনারেট করা তা যদি আপনার নিশ্চিত জানা না থাকে, তবে কোনো কিছু সরানো বা বাদ দেওয়ার আগে আপনার বিল্ড টুলের কনফিগারেশন বা প্রজেক্টের ডকুমেন্টেশন দেখে নিন। কিছু জেনারেট করা ফাইল প্রজেক্টের জন্য প্রয়োজন হতে পারে বা ইচ্ছাকৃতভাবেই চেক-ইন করা থাকে। প্রজেক্টের যদি সেগুলোর প্রয়োজন হয়, তবে সেই ফাইলগুলোকে ভার্সন কন্ট্রোলে রাখুন।

.gitignore-এ জেনারেট করা ফোল্ডারটি যুক্ত করুন

রিপোজিটরির রুটে একটি টেক্সট এডিটরে .gitignore নামের একটি ফাইল তৈরি করুন বা খুলুন। ফাইন্ডার ফোল্ডার তৈরি করতে এবং ফাইল স্থানান্তর করতে পারে, কিন্তু এটি গিট ইগনোর কন্ট্রোল সরবরাহ করে না; গিট .gitignore এবং সম্পর্কিত কনফিগারেশন থেকে ইগনোর প্যাটার্নগুলো পড়ে। .gitignore ফাইলের সাপেক্ষে আসল পাথ ব্যবহার করে আউটপুট ডিরেক্টরির জন্য একটি রুল যুক্ত করুন। যেমন:

/build/

শুরুতে থাকা একটি স্ল্যাশ এই প্যাটার্নটিকে রিপোজিটরি রুটে নোঙ্গর (অ্যাঙ্কর) করে, এবং শেষের স্ল্যাশটি এটিকে একটি ডিরেক্টরির সাথে মেলায়। যদি আপনার জেনারেট করা আউটপুট কোনো ফোল্ডারের ভেতরে থাকে, তবে তার পরিবর্তে সেই পাথটি ব্যবহার করুন, যেমন /app/generated/। গিটের gitignore ডকুমেন্টেশন-এ প্যাটার্ন ম্যাচিংয়ের ব্যাখ্যা দেওয়া হয়েছে এবং উল্লেখ করা হয়েছে যে পুরো প্রজেক্ট জুড়ে প্রযোজ্য রুলগুলো .gitignore-এ রাখা উচিত যাতে সেগুলো অন্য ক্লোনগুলোর সাথে শেয়ার করা যায়।

লোকালভাবে জেনারেট করা এমন কোনো ফোল্ডারের ক্ষেত্রে যা রিপোজিটরিতে কাজ করা অন্যান্য ব্যক্তিদের প্রভাবিত করা উচিত নয়, সেটির রুল এর পরিবর্তে .git/info/exclude-এ যুক্ত করুন। গিট এটিকে .gitignore-এর রিপোজিটরি-নির্দিষ্ট বিকল্প হিসেবে নথিভুক্ত করেছে। একটি কমিট করা .gitignore রুল তখন ব্যবহার করুন যখন আউটপুটটি প্রজেক্টে সবার জন্যই জেনারেট হয় এবং সব অবদানকারীর জন্যই বাদ রাখা প্রয়োজন।

রুলটি নিশ্চিত করুন এবং ইতোমধ্যে ট্র্যাক করা ফাইলগুলো পরিচালনা করুন

টার্মিনাল খুলুন এবং রিপোজিটরি ডিরেক্টরিতে যান। স্ট্যাটাস পরীক্ষা করুন, তারপর জেনারেট করা কোনো পাথে কোন রুলটি প্রযোজ্য হচ্ছে তা গিটকে জিজ্ঞাসা করুন:

git status --short
git check-ignore -v build/example-file

build/example-file-কে আপনার আউটপুট ফোল্ডারে থাকা একটি আসল পাথ দিয়ে প্রতিস্থাপন করুন। -v অপশনটি মিলে যাওয়া ইগনোর রুল এবং যে ফাইলে এটি রয়েছে তা প্রদর্শন করে। গিট যদি কোনো মিল খুঁজে না পায়, তবে পাথ এবং প্যাটার্নটি নিশ্চিত করুন: .gitignore-এর পাথগুলো ফাইলের অবস্থানের সাপেক্ষে ব্যাখ্যা করা হয়, এবং একটি রুল অন্য কোনো ম্যাচিং রুল দ্বারা বাতিল (override) হতে পারে। গিটের check-ignore রেফারেন্স-এ ইগনোর ম্যাচ কীভাবে পরিদর্শন করতে হয় তা বর্ণনা করা হয়েছে।

একটি ইগনোর রুল ইতোমধ্যে গিটে কমিট করা বা স্টেজ করা ফাইলগুলোর ট্র্যাকিং বন্ধ করে না। গিট স্পষ্টভাবে বলে যে ট্র্যাক করা ফাইলগুলো ইগনোর রুল দ্বারা প্রভাবিত হয় না। লোকাল কপি অক্ষত রেখে ইনডেক্স থেকে পূর্বে ট্র্যাক করা কোনো জেনারেট ফাইল সরাতে, সঠিক পাথসহ git rm --cached ব্যবহার করুন, তারপর কমিট করার আগে পরিবর্তনটি পর্যালোচনা করুন। যেমন:

git rm --cached build/example-file
git status --short

এটি গিটের ইনডেক্স থেকে কেবল নির্দিষ্ট ফাইলটি সরিয়ে দেয়; এটি কোনো ডিরেক্টরির প্রতিটি ফাইলকে স্বয়ংক্রিয়ভাবে আনট্র্যাক করে না। পরিবর্তনটি কমিট করার আগে স্ট্যাটাস আউটপুট পর্যালোচনা করুন, বিশেষ করে যদি আপনি সম্পূর্ণ আউটপুট ট্রি আনট্র্যাক করতে চান। ফাইল ইগনোর করার জন্য গিটহাবের গাইড-এ লোকাল এক্সক্লুশন এবং শেয়ার করা .gitignore রুলের মধ্যকার পার্থক্যও ব্যাখ্যা করা হয়েছে।

নাম পরিদর্শনের জন্য ফাইন্ডার ব্যবহার করুন, গিটের নিয়ম কার্যকর করতে নয়

ফাইন্ডার ফাইলের ধরন পরিদর্শন করা সহজ করে তুলতে পারে: Finder > Settings > Advanced নির্বাচন করুন এবং Show all filename extensions সক্রিয় করুন। এটি সোর্স ফাইল এবং জেনারেট করা ফাইলের নাম যখন একই রকম হয়, তখন তাদের মধ্যে পার্থক্য করতে সাহায্য করতে পারে। অ্যাপল উল্লেখ করেছে যে এক্সটেনশনগুলো অন্যথায় লুকানো থাকতে পারে এবং কেবল ফাইলের ফরম্যাট পরিবর্তন করার জন্য কোনো ফাইলের নাম পরিবর্তনের এক্সটেনশন পরিবর্তন না করার পরামর্শ দেয়। ফাইলের নামের এক্সটেনশন দেখানো বা লুকানোর জন্য অ্যাপলের নির্দেশাবলী দেখুন।

অতএব নির্ভরযোগ্য বিভাজনটি হলো: ফাইন্ডার জেনারেট করা আউটপুটের জন্য একটি দৃশ্যমান ফোল্ডার সরবরাহ করে, বিল্ড টুল সেখানে ফাইল লেখে, এবং গিটের ইগনোর রুলগুলো উপযুক্ত আনট্র্যাকড ফাইলগুলোকে ভার্সন কন্ট্রোল থেকে বাদ রাখে। যখনই প্রজেক্টের বিল্ড কনফিগারেশন পরিবর্তিত হয়, তখনই আসল আউটপুট পাথ এবং গিট স্ট্যাটাস পরীক্ষা করুন।

সূত্রসমূহ