তিনটি জায়গা রয়েছে যেখানে একটি ফাইল বলা যেতে পারে - গাছ, সূচক এবং কার্যকরী অনুলিপি। আপনি যখন কোনও ফোল্ডারে সবেমাত্র একটি ফাইল যুক্ত করবেন, আপনি এটিকে ওয়ার্কিং কপির সাথে যুক্ত করছেন।
আপনি যখন এমন কিছু করেন যখন আপনি git add fileএটি সূচকে যুক্ত করেন। এবং আপনি যখন এটি প্রতিশ্রুতিবদ্ধ করেন, আপনি এটি গাছটিতেও যুক্ত করেন।
এটি সম্ভবত গিট রিসেটে আরও তিনটি সাধারণ পতাকা জানতে আপনাকে সহায়তা করবে:
গিট রিসেট [- <mode>] [ <commit>]
এই ফর্মটি বর্তমান শাখার প্রধানকে পুনরায় সেট করে <commit>এবং সম্ভবত সূচকটি (এটি গাছের সাথে পুনরায় সেট করা <commit>) এবং কার্যকারী গাছের উপর নির্ভর করে আপডেট করে <mode>, যা নিম্নলিখিতগুলির মধ্যে একটি হতে হবে: -
সাফ্ট
সূচি ফাইল বা কার্যকারী গাছকে মোটেই স্পর্শ করে না (তবে <commit>সমস্ত মোডের মতোই মাথাটি পুনরায় সেট করে )। এটি আপনার সমস্ত পরিবর্তিত ফাইলগুলিকে "প্রতিশ্রুতিবদ্ধ হতে পরিবর্তনগুলি" ছেড়ে দেয়, যেমন গিট স্ট্যাটাসটি এতে রাখে।
--mixed
সূচী পুনরায় সেট করে তবে কার্যনির্বাহী গাছ নয় (অর্থাত্ পরিবর্তিত ফাইলগুলি সংরক্ষিত থাকলেও প্রতিশ্রুতিবদ্ধ হিসাবে চিহ্নিত করা হয় না) এবং আপডেট করা হয়নি বলে প্রতিবেদন করে। এটি ডিফল্ট কর্ম হয়।
--hard
সূচক এবং কার্যক্ষম গাছ পুনরায় সেট করে। কার্যক্ষেত্রের ট্র্যাক করা ফাইলগুলিতে যে কোনও পরিবর্তন <commit>বাতিল করা হয়েছে।
এখন, যখন আপনি যেমন কিছু করেন git reset HEAD- আপনি আসলে যা করছেন তা হ'ল git reset HEAD --mixedএটি সূচকে "পুনরায় সেট" করে দেবে আপনি সূচিগুলিতে ফাইলগুলি যুক্ত করতে / পরিবর্তনগুলি যুক্ত করা শুরু করার আগে (এর মাধ্যমে git add) এই ক্ষেত্রে, ওয়ার্কিং অনুলিপি এবং সূচক (বা স্টেজিং) সিঙ্কে ছিল, তবে আপনি পুনরায় সেট করার পরে HEAD এবং সূচকটি সিঙ্কে তৈরি করেছেন।
git rmঅন্যদিকে কার্যনির্বাহী ডিরেক্টরি এবং সূচক থেকে একটি ফাইল সরিয়ে দেয় এবং আপনি যখন প্রতিশ্রুতিবদ্ধ হন তখন ফাইলটি গাছ থেকেও সরানো হয়। git rm --cachedতবে ফাইলটিকে কেবল সূচক থেকে সরিয়ে ফেলা হয় এবং এটি আপনার কার্যকরী অনুলিপিতে রাখে। এটি হ'ল বিপরীতে git add file এই ক্ষেত্রে, আপনি সূচককে প্রধান এবং কার্যকারিতা থেকে পৃথক করে তোলেন, এতে যে হেডের ফাইলের পূর্বে প্রতিশ্রুতিবদ্ধ সংস্করণ রয়েছে, ওয়ার্কিং অনুলিপিটি হ'ল হেডের কোনও বিষয়বস্তু বা লিখিত সামগ্রী থাকলে শেষ পরিবর্তন হয়েছিল working ফাইলটি এবং আপনি সূচি থেকে ফাইলটি সরিয়েছেন। একটি কমিট এখন সূচি এবং গাছ সিঙ্ক করবে এবং ফাইলটি সরানো হবে।
git rm --cachedgit diffgit diff --cachedgit statusUntracked