আমি গিট সহ একটি ফাইল মুছে ফেলেছি এবং তারপরে প্রতিশ্রুতিবদ্ধ করেছি, সুতরাং ফাইলটি আর আমার কার্যকরী অনুলিপিতে নেই। আমি সেই ফাইলটির বিষয়বস্তু দেখতে চাই, তবে বাস্তবে এটি পুনরুদ্ধার করব না। কিভাবে আমি এটি করতে পারব?
আমি গিট সহ একটি ফাইল মুছে ফেলেছি এবং তারপরে প্রতিশ্রুতিবদ্ধ করেছি, সুতরাং ফাইলটি আর আমার কার্যকরী অনুলিপিতে নেই। আমি সেই ফাইলটির বিষয়বস্তু দেখতে চাই, তবে বাস্তবে এটি পুনরুদ্ধার করব না। কিভাবে আমি এটি করতে পারব?
উত্তর:
git show HEAD^:path/to/file
আপনি একটি সুস্পষ্ট প্রতিশ্রুতি শনাক্তকারী বা HEAD~nপুরানো সংস্করণগুলি দেখতে বা যদি আপনি এটি মুছে ফেলার পরে একাধিক প্রতিশ্রুতিবদ্ধ হয়ে থাকেন তা ব্যবহার করতে পারেন।
fatal: Invalid object name 'HEAD^'.(আমার উল্লেখ করতে হবে, আমার কেবল "প্রাথমিক প্রতিশ্রুতি" আছে)
এটি যদি এমন কোনও ফাইল হয়ে থাকে যা আপনি কিছুক্ষণ আগে মুছে ফেলেছিলেন এবং পুনর্বিবেচনার সন্ধান করতে চান না , আপনি ব্যবহার করতে পারেন (ফাইলটির নাম fooএই উদাহরণে দেওয়া হয়েছে; আপনি একটি পুরো পথ ব্যবহার করতে পারেন):
git show $(git rev-list --max-count=1 --all -- foo)^:foo
অনুরোধ rev-listসমস্ত সংশোধনীর সন্ধান করে fooতবে কেবল একটির তালিকাবদ্ধ করে। যেহেতু rev-listবিপরীত কালানুক্রমিক তালিকায় তালিকাগুলি রয়েছে, তারপরে এটি কী তালিকাবদ্ধ করে তা হ'ল সর্বশেষ সংশোধন যা পরিবর্তিত হয়েছিল foo, এটি মুছে ফেলা প্রতিশ্রুতি হবে foo। (এই ভাবনাটি হলো এই যে Git একটি মুছে ফেলা ফাইল পরিবর্তন করা এবং এখনও অনুমতি দেয় না উপর ভিত্তি করে তৈরি থাকতে মোছা হয়েছে।) আপনি ঠিক যে সংস্করণ ব্যবহার করতে পারবেন না rev-listআয় হিসাবে- কারণ fooআর অস্তিত্ব আছে। আপনি যা ফাইলের শেষ সংস্করণ, অত রয়েছে শুধু এটা আগে এক জন্য জিজ্ঞাসা করতে হবে ^যে git show।
**/fooযদি পথটি না জানেন তবে আপনি লিখতে পারেন (এটি রেভ-লিস্ট কমান্ডের জন্য কাজ করবে তবে শো কমান্ড নয় However তবে রেভ-লিস্ট কমান্ডের প্রতিশ্রুতি সহ আপনি পাথটি খুঁজে পেতে পারেন)।
যেহেতু আপনি সঠিক পাথটি মনে করতে পারেন না, আপনি গিট লগ থেকে sha1 পেতে পারেন তবে আপনি কেবল ইস্যু করতে পারেন
git cat-file -p <sha1>
git whatchanged --no-abbrevযা গিট (বা এসএনএন) লগের অনুরূপ আউটপুট দেয়।
path/to/fileপ্রকল্পের শীর্ষ থেকে সম্পূর্ণ পথ (সংগ্রহস্থলের শীর্ষ দিকের) d