কোনও প্যাচ তৈরি করে কোনও ফোল্ডারকে কোনও বিশেষ প্রতিশ্রুতিতে কীভাবে ফেরানো যায়


99

'সামফোল্ডার' ফোল্ডারের জন্য এখানে আমার ইতিহাস

$ git log somefolder

commit 89cd
More changes to somefolder

commit ef47a
Updating somefolder and other stuff

commit e095
Bugs fixed in somefolder

আমি কিছু ফোল্ডারকে আবার কিছু ফোল্ডারে "বাগগুলি স্থির করে" প্রতিশ্রুতিতে ফিরিয়ে আনতে চাই।

যেহেতু দ্বিতীয় প্রতিশ্রুতিবদ্ধতা কোনও ফোল্ডারের বাইরে পরিবর্তনগুলি জড়িত তাই আমি এই প্রতিশ্রুতিটি ফিরিয়ে দিতে চাই না।

আমি অনুমান করি যে নিরাপদতম উপায়টি কমিট E095 এবং 89cd এর মধ্যে একটি ডিফ / প্যাচ তৈরি করা হবে যা কেবলমাত্র কিছু ফোল্ডারে প্রয়োগ হয় এবং তারপরে সেই প্যাচটি প্রয়োগ করে। আমি এটা কিভাবে করবো?

উত্তর:


160

আপনার সংগ্রহস্থলটিকে একটি নির্দিষ্ট অবস্থায় আপডেট করতে আপনি গিট চেকআউট ব্যবহার করতে পারেন ।

git checkout e095 -- somefolder

পার্থক্য তৈরি সম্পর্কে আপনার প্রশ্ন হিসাবে, এটি খুব কার্যকর হবে। আপনার বর্তমান অবস্থা থেকে ফিরে যেতে কেবল এই ভিন্নতা তৈরি করুন e095:

git diff 89cd..e095 -- somefolder

31
এই যে কমিট যে যোগ করা হয় নি ফাইল, ব্যবহারের মুছে যায় না git reset e095 -- some/folderপরিবর্তে
shime

4
গিট ২.২২ থেকে আপনি এর --no-overlayজন্য ব্যবহার করতে পারেন git checkoutযাতে ট্র্যাক করা ফাইলগুলি যেগুলি প্রতিশ্রুতিবদ্ধ নয় যেগুলি আপনি চেক আউট করছেন তা সরিয়ে ফেলা হবে।
মারিউজ পাভেলস্কি

56

আপনি git resetসূচকটি পুনরায় সেট করতে ব্যবহার করতে পারেন যা আরও সাম্প্রতিক কমিটে যুক্ত হওয়া ফাইলগুলি সরিয়ে ফেলাও অন্তর্ভুক্ত করবে ( git checkoutএটি নিজেরাই এটি করেন না):

git reset e095 -- somefolder

তবে git resetকার্যকরী অনুলিপি আপডেট করে না এবং --hardবিকল্পগুলি ফোল্ডারগুলির সাথে কাজ করে না। তারপরে git checkoutওয়ার্কিং কপিটিকে সূচকের মতো করে তৈরি করতে ব্যবহার করুন :

git checkout -- somefolder

এবং তারপরে আপনি যদি যুক্ত হওয়া কোনও ফাইল সরিয়ে নিতে চান তবে আপনাকে টুডোও দরকার:

git clean -fd somefolder

ডিরেক্টরিতে নতুন ফাইল অন্তর্ভুক্ত করা হলে এই উত্তরটি আমার পক্ষে কাজ করে।
ইয়াহো

4
আপনি যদি সত্যিই সেই সময়ে সংগ্রহস্থলের একটি পরিষ্কার স্ন্যাপশট চান তবে এই উত্তরটি আরও ভাল।
ডেটা রাজকন্যা

সত্যিই অনেক ভাল!
এলেক্সিস পাউট্রোট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.