আপনি যদি আপনার লোকাল মেশিনে ফাইল যোগ করেন তারপর সেই ফাইলগুলো রিপোজিটরিতে যোগ ছাড়া একটি রিমোট কপি পুল করার চেষ্টা করেন, আপনি "nothing added to commit but untracked files present" Git এরর দেখবেন।
এই গাইড এই এরর কী বোঝায় তা আলোচনা করে। আমরা এই ইস্যুর দুটি পোটেনশিয়াল সমাধান এবং তাদের সুবিধা-অসুবিধা নিয়ে আলোচনা করব।
nothing added to commit but untracked files present
Git একটি ডিস্ট্রিবিউটেড ভার্সন কন্ট্রোল সিস্টেম। এর মানে আপনি একটি রিপোজিটরির একটি লোকাল কপি বানাতে পারেন এবং সেটিতে আপনার নিজস্ব পরিবর্তন আনতে পারেন। এই পরিবর্তনগুলো মেইন প্রজেক্টে রিফ্লেক্ট হয় না যতক্ষণ না আপনি সেগুলো কমিট করেন।
যখন আপনি একটি রিমোট সার্ভার থেকে কোড পুল করেন, নিশ্চিত করুন যে আপনার লোকাল মেশিনের সকল ফাইল Git স্টেজিং এরিয়াতে বা একটি কমিটের অংশ। এর কারণ হলো Git জানতে চায় কী ফাইলগুলো একটি রিপোজিটরির অংশ।
একটি রিপোজিটরিতে git pull কমান্ড এক্সিকিউট করা যেখানে আপনি প্রতিটি ফাইল স্টেজিং এরিয়াতে বা একটি কমিটে যোগ করেননি নিচের এরর ফলাফল দেবে:
nothing added to commit but untracked files present
আনট্র্যাকড ফাইল: একটি প্রাইমার
আনট্র্যাকড ফাইলগুলো হলো একটি প্রজেক্টের ভিতরে থাকা ফাইল যেগুলো Git-এ কনফিগার করা হয়েছে, কিন্তু Git রিপোজিটরির অংশ হয়ে নেই।
ফাইলগুলো শুধু একটি Git রিপোজিটরির অংশ হয় যদি আপনি সেগুলো "git add" কমান্ড ব্যবহার করে যোগ করেন। এটি আপনাকে আপনার লোকাল মেশিনে ফাইল তৈরি এবং মডিফাই করতে দেয় যেগুলো একটি রিপোজিটরিতে ডেভেলপমেন্ট লাইনের অংশ হতে হবে না।
৮১% পার্টিসিপেন্ট заявил করেছেন যে বুটক্যাম্পে অংশগ্রহণের পর তাদের টেক জব প্রস্পেক্টস নিয়ে তারা আরও আত্মবিশ্বাসী মনে করছেন। আজই একটি বুটক্যাম্পে ম্যাচ করুন।
গড় বুটক্যাম্প গ্র্যাজুট ক্যারিয়ার ট্রানজিশনে ছয় মাসের কম সময় ব্যয় করেছেন, বুটক্যাম্প শুরু থেকে প্রথম জব পাওয়ার পর্যায়ে।
আনট্র্যাকড ফাইলগুলো হয় একটি প্রজেক্টে যোগ করা উচিত, অথবা .gitignore ফাইলে একটি রুল ব্যবহার করে ইগনোর করা উচিত।
সমাধান
এই এরর দুটি পোটেনশিয়াল সমাধান রয়েছে।
প্রথম সমাধান হলো সকল আনট্র্যাকড ফাইলগুলো একটি Git রিপোজিটরিতে যোগ করা। এটি git add কমান্ড ব্যবহার করে করুন:
git add file_to_add.md
এটি ফাইলটি স্টেজিং এরিয়াতে মুভ করবে। আপনি যখন একটি ফাইল স্টেজিং এরিয়াতে যোগ করেন, সেটি ট্র্যাকড হয়ে যায়। এর কারণ হলো স্টেজিং এরিয়াতের সকল ফাইল পরবর্তী কমিটে যোগ করা হয় যা আপনি তৈরি করবেন, যদি না সেগুলো রিমুভ করা হয়। Git এই ফাইলগুলো ট্র্যাক করতে বাধ্য যাতে সেগুলো কমিটে যোগ করা যায়।
দ্বিতীয় অপশন হলো আপনি আপনার রিপোজিটরিতে যোগ করা ফাইলগুলো ইগনোর করা। এই অপশনটি সেরা যদি আপনি চান আপনি তৈরি করা ফাইলগুলো Git রিপোজিটরির অংশ না হোক। এটি কনফিগারেশন ফাইলগুলোর জন্য সাধারণ যেগুলো API কি বা লোকাল ডিপেন্ডেন্সি স্টোরেজ ফোল্ডার সংরক্ষণ করে।
আপনি ফাইলগুলো ইগনোর করতে পারেন আপনার প্রজেক্টের .gitignore ফাইলে একটি এন্ট্রি যোগ করে:
file_to_add.md directory/
আপনি আপনার প্রজেক্টের যেকোনো ডিরেক্টরিতে একটি gitignore ফাইল রাখতে পারেন। সেরা হচ্ছে আপনার .gitignore আপনার রিপোজিটরির রুট ফোল্ডারে রাখা যাতে সহজে অ্যাক্সেসযোগ্য থাকে। .gitignore ফাইলের সকল রুল রিকার্সিভলি প্রয়োগ হবে সেই ফাইল এবং ফোল্ডারগুলোর ওপর যেগুলো সেই ফোল্ডারের ভিতরে আছে যেটিতে .gitignore ফাইলটি স্টোর করা আছে।
এখন যেহেতু আমরা এররটি সমাধান করেছি, আমরা git pull কমান্ড ব্যবহার করে একটি Git রিপোজিটরির সবচেয়ে সাম্প্রতিক ভার্সন পুল করতে পারি:
git pull
এই কমান্ড সফল হওয়া উচিত কারণ আমরা এখন প্রজেক্ট ফোল্ডারে থাকা সকল ফাইল ট্র্যাক বা ইগনোর করছি।
উপসংহার
"nothing added to commit but untracked files present" এরর উত্থান করে যখন আপনি আপনার লোকাল ওয়ার্কিং কপিতে নতুন ফাইল তৈরি করেন এবং সেগুলো স্টেজিং এরিয়াতে যোগ করা ভুলে যান একটি নতুন ভার্সন পুল করার আগে।
এই এরর ফিক্স করতে, হয় ত্রুটি সৃষ্টিকারী ফাইলগুলো স্টেজিং এরিয়াতে যোগ করুন অথবা .gitignore ফাইল ব্যবহার করে সেগুলো ইগনোর করুন। এখন আপনার কাছে वो নলেজ রয়েছে যা আপনাকে এই সাধারণ Git এরর প্রফেশনালের মতো ফিক্স করতে দেবে।