গিট রিসেটটি পূর্বাবস্থায় ফিরিয়ে আনুন - মঞ্চ অঞ্চলে অসমাপ্ত ফাইল সহ hard


109

আমি আমার কাজটি পুনরুদ্ধার করার চেষ্টা করছি। আমি বোকা হয়েছি git reset --hard, কিন্তু এর আগে আমি কেবল করেছি get add .এবং করিনি git commit। সাহায্য করুন! এখানে আমার লগ:

MacBookPro:api user$ git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)

#   modified:   .gitignore
...


MacBookPro:api user$ git reset --hard
HEAD is now at ff546fa added new strucuture for api

git reset --hardএই পরিস্থিতিতে কি পূর্বাবস্থায় ফেরা সম্ভব ?


পছন্দ করুন আপনি আমার কাজ ফিরে পেয়েছেন! সমস্ত আউটপুট ফাইল তৈরি করার জন্য আমি পাইথন স্ক্রিপ্ট লিখেছিলাম! আমি স্ক্রিপ্টটি উত্তর হিসাবে যুক্ত করব
বয়

4
'বোকামি' নয় .. 'নির্লিপ্তভাবে' ... কারণ আমি স্রেফ সেই একই কাজ করেছি!
রোসদী কাসিম

এখনও বোকামি হতে পারে ;-)
ডানকান ম্যাকগ্রিগর

এর কিছুটি কীভাবে বিপরীত করা যায় সে সম্পর্কে একটি দুর্দান্ত নিবন্ধ এখানে । এটি কিছু ম্যানুয়াল কাজ নিতে যাচ্ছে।
জান সোয়ার্ট

@ মারকলঙ্গায়ার `` `.git / অবজেক্টস--টাইপ এফ-প্রিন্টফ '% টিওয়াই-% টিএম-% টিডি% টিটি% পি \ এন' | সাজানো `` `আমার জন্য কাজ করেছিল। তারিখগুলিও উপস্থিত হয়, শেষ থেকে ব্লবগুলি পরীক্ষা করা শুরু করুন।
জাকআকি

উত্তর:


175

আপনি সূচীতে যুক্ত হওয়া কোনও ফাইল পুনরুদ্ধার করতে সক্ষম হবেন (উদাহরণস্বরূপ, আপনার পরিস্থিতিতে যেমন রয়েছে git add .) যদিও এটি কিছুটা কাজ হতে পারে। সূচীতে কোনও ফাইল যুক্ত করার জন্য, গিটটি এটিকে অবজেক্ট ডাটাবেসে যুক্ত করে, যার অর্থ এটি এতক্ষণ পুনরুদ্ধার করা যায় যেহেতু আবর্জনা সংগ্রহ এখনও হয়নি। জাকুব নারাবস্কির উত্তরে এখানে কীভাবে এটি করা যায় তার একটি উদাহরণ রয়েছে :

যাইহোক, আমি চেষ্টা করেছিলাম এটি একটি পরীক্ষার সংগ্রহস্থলটি দেখেছি এবং বেশ কয়েকটি সমস্যা ছিল - --cachedহওয়া উচিত --cacheএবং আমি খুঁজে পেয়েছি যে এটি আসলে .git/lost-foundডিরেক্টরিটি তৈরি করে নি । তবে, নিম্নলিখিত পদক্ষেপগুলি আমার পক্ষে কাজ করেছে:

git fsck --cache --unreachable $(git for-each-ref --format="%(objectname)")

এটি সেই অবজেক্ট ডাটাবেসের সমস্ত অবজেক্টকে আউটপুট করা উচিত যা কোনও রেফ, সূচীতে বা রিফ্লগের মাধ্যমে পৌঁছনীয় নয়। আউটপুটটি এরকম কিছু দেখবে:

unreachable blob 907b308167f0880fb2a5c0e1614bb0c7620f9dc3
unreachable blob 72663d3adcf67548b9e0f0b2eeef62bce3d53e03

... এবং এই প্রতিটি ব্লবের জন্য আপনি এটি করতে পারেন:

git show 907b308

ফাইলের বিষয়বস্তু আউটপুট করতে।


খুব বেশি আউটপুট?

নীচে সেহের মন্তব্যের জবাবে আপডেট করুন:

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

প্রথমে কমান্ডের আউটপুট সংরক্ষণ করুন:

git fsck --cache --unreachable $(git for-each-ref --format="%(objectname)") > all

এখন এই অচিহ্নিতযোগ্য কমিটের অবজেক্টের নামগুলি এর সাথে পাওয়া যাবে:

egrep commit all | cut -d ' ' -f 3

সুতরাং আপনি কেবলমাত্র গাছ এবং অবজেক্টগুলি সূচকগুলিতে যুক্ত করেছেন, তবে কোনও মুহুর্তে প্রতিশ্রুতিবদ্ধ নেই এটি সহ:

git fsck --cache --unreachable $(git for-each-ref --format="%(objectname)") \
  $(egrep commit all | cut -d ' ' -f 3)

এটি আপনাকে বিবেচনা করতে হবে এমন অবজেক্টের সংখ্যা হ্রাস করে।


আপডেট: নীচে ফিলিপ ওকলি বিবেচনার জন্য অবজেক্টের সংখ্যা কেটে নেওয়ার অন্য উপায়ের পরামর্শ দেয়, যা কেবলমাত্র অধীনে সর্বাধিক সংশোধিত ফাইলগুলি বিবেচনা করা .git/objects। আপনি এটির সাথে এটি পেতে পারেন:

find .git/objects/ -type f -printf '%TY-%Tm-%Td %TT %p\n' | sort

(আমি এই findঅনুরোধটি এখানে পেয়েছি )) সেই তালিকার শেষটি দেখতে দেখতে দেখতে পাবেন:

2011-08-22 11:43:43.0234896770 .git/objects/b2/1700b09c0bc0fc848f67dd751a9e4ea5b4133b
2011-09-13 07:36:37.5868133260 .git/objects/de/629830603289ef159268f443da79968360913a

কোন ক্ষেত্রে আপনি এই বিষয়গুলি সাথে দেখতে পারেন:

git show b21700b09c0bc0fc848f67dd751a9e4ea5b4133b
git show de629830603289ef159268f443da79968360913a

(নোট করুন যে /অবজেক্টের নাম পেতে আপনাকে পাথের শেষে সরাতে হবে))


আমার উত্তর পোস্ট করার আগে আমি ঠিক এই পদক্ষেপগুলি সহ বিবেচনা করেছি। যাইহোক, আমার স্থানীয় এক রেপো দিয়ে এটি চেষ্টা করার পরে, আমি শত শত পৌঁছনীয় পেয়েছি, এবং জমা দেওয়ার তারিখ অনুসারে এগুলি সাজানোর জন্য আমি পর্যাপ্ত পন্থা করতে পারিনি। এখন যে ভয়ঙ্কর হবে
sehe

3
আপনার সর্বশেষ প্রতিশ্রুতির চেয়ে পরে থাকা সাম্প্রতিক অবজেক্টগুলির জন্য অবজেক্ট টাইম স্ট্যাম্পগুলি একবার দেখে নেওয়া কি সম্ভব নয়? বা আমি কিছু মিস করছি
ফিলিপ ওকলে

1
@ ফিলিপ ওকলি: এই পরামর্শের জন্য ধন্যবাদ, আমি অবজেক্ট ডাটাবেসের মধ্যে সর্বাধিক সংশোধিত বস্তুগুলি সন্ধানের জন্য পরামর্শটি যুক্ত করেছি।
লংগায়ারকে

2
বাবু, এটা দুর্দান্ত! এটি এখনই আমার @ saved সংরক্ষণ করেছে। এবং আমি কিছু গিট বিজ্ঞান শিখেছি। আপনি সূচীতে কী যুক্ত করবেন তা আরও ভালভাবে দেখুন ...
বোলারসেনিয়ার

1
এখানে কারও চুনের আলো চুরি করবেন না। তবে ঠিক যেমন একটি নোট হিসাবে আমি কেবল একই সমস্যায় পড়েছিলাম এবং ভেবেছিলাম আমার সমস্ত কাজ আমি হারিয়ে ফেলেছি। যারা আইডিই ব্যবহার করেন তাদের জন্য , আইডিইগুলির সাধারণত একটি ক্লিক পুনরুদ্ধার সমাধান থাকে। পিএইচপিস্টর্মের ক্ষেত্রে আমাকে কেবল ডাইরেক্টরিতে ক্লিক করতে হয়েছিল এবং স্থানীয় ইতিহাস দেখান এবং তারপরে শেষ বৈধ অবস্থায় ফিরে যেতে হয়েছিল।
শালম স্যাম

58

আমি সবেমাত্র একটি করেছি git reset --hardএবং একটি প্রতিশ্রুতি হারিয়েছি। তবে আমি প্রতিশ্রুতিবদ্ধ হ্যাশ জানতাম, তাই আমি git cherry-pick COMMIT_HASHএটি পুনরুদ্ধার করতে সক্ষম হয়েছি ।

প্রতিশ্রুতি হারানোর কয়েক মিনিটের মধ্যে আমি এটি করেছি, সুতরাং এটি আপনার কারও জন্য কার্যকর হতে পারে।


5
ধন্যবাদ আপনাকে ধন্যবাদ আপনাকে ধন্যবাদ এই উত্তরটির জন্য একটি দিনের কাজের পুনরুদ্ধার করার জন্য পরিচালিত
ডেস

21
সম্ভবত আপনি উল্লেখ করতে পারেন যে আপনি সেই হ্যাশগুলি ব্যবহার করে দেখতে পারেন git reflog, যেমন git reset --hard-> git reflog(হেড @ {1} হ্যাশটির দিকে তাকিয়ে) এবং শেষ পর্যন্তgit cherry-pick COMMIT_HASH
জাভিয়ের লোপেজ

2
ছেলেরা এটি পড়ছেন, সাবধান হন যে এটি কেবলমাত্র একটি প্রতিশ্রুতিবদ্ধ হ্যাশের জন্যই কাজ করে, যদি একক প্রতিশ্রুতির চেয়ে বেশি কিছু ঘটে থাকে তবে সমস্যাটি একবারে সমাধান হবে না!
আইন তোহভরী

4
আপনি আসলে "ফরোয়ার্ড" রিসেট করতে পারেন। সুতরাং আপনি যদি একাধিক কমিটি রিসেট করে থাকেন তবে অন্য 'গিট রিসেট --হর <কমিট>' করে পুরো কমিট চেইনটি সেই বিন্দু পর্যন্ত পুনরুদ্ধার করা উচিত। (প্রদত্ত যে তারা এখনও GC'ed নয়)
আকিমসকো

6
git reset --hardgit reset --hard @{1}
কমিটস

13

মার্ক লংগায়ারকে ধন্যবাদ আমি আমার জিনিসগুলি ফিরে পেয়েছি!

প্রথমে আমি সমস্ত হ্যাশগুলিকে একটি ফাইলে সংরক্ষণ করেছি:

git fsck --cache --unreachable $(git for-each-ref --format="%(objectname)") > allhashes

এরপরে আমি সেগুলি সমস্ত ('অ্যাক্সেসযোগ্য ব্লব' জিনিসটি মুছে ফেলা) একটি তালিকায় রেখেছি এবং সবগুলি নতুন ফাইলে ডেটা রেখেছি ... আপনার ফাইলগুলি বেছে নিতে হবে এবং আপনার প্রয়োজন মতো পুনরায় নামকরণ করতে হবে ... তবে আমার কেবল কয়েকটি দরকার ছিল ফাইল..হপ এটি কারও সাহায্য করে ...

commits = ["c2520e04839c05505ef17f985a49ffd42809f",
    "41901be74651829d97f29934f190055ae4e93",
    "50f078c937f07b508a1a73d3566a822927a57",
    "51077d43a3ed6333c8a3616412c9b3b0fb6d4",
    "56e290dc0aaa20e64702357b340d397213cb",
    "5b731d988cfb24500842ec5df84d3e1950c87",
    "9c438e09cf759bf84e109a2f0c18520",
    ...
    ]

from subprocess import call
filename = "file"
i = 1
for c in commits:
    f = open(filename + str(i),"wb")
    call(["git", "show", c],stdout=f)
    i+=1

1
হ্যাঁ! এটাই আমার দরকার ছিল। আমি সমস্ত ফাইল পুনরায় তৈরি করার জন্য পাইথন স্ক্রিপ্টটি পছন্দ করি। অন্যান্য উত্তরগুলি আমার আবর্জনা সংগ্রহের সাথে আমার ডেটা হারানো সম্পর্কে উদ্বিগ্ন হয়ে পড়েছিল, সুতরাং ফাইলগুলি ফেলে দেওয়া আমার পক্ষে একটি জয় :) :)
এরিক ওলসন

1
আমি এই উত্তরের উপর ভিত্তি করে এই স্ক্রিপ্ট লিখেছি। বাক্সের বাইরে কাজ করে: github.com/pendashteh/git-recover-index
আলেকজার

1
আমি সহজে এর মতো এটিকে স্বয়ংক্রিয় খুঁজে পেয়েছেন: mkdir lost; git fsck --cache --unreachable $(git for-each-ref --format="%(objectname)") | grep -Po '\s\S{40}$' | xargs -i echo "git show {} > lost/{}.blob" | sh। ফাইলগুলি শেষ হবেlost/*.blob
মতিজা নালিস

6

মন্তব্যগুলিতে @ আজেদী 32 এর সমাধানটি আমার ঠিক এই পরিস্থিতিতে কাজ করেছিল।

git reset --hard @{1}

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


আমার কাছে অনেকগুলি অনিবার্য ফাইল ছিল। তারপরে আমি 1 টি ফাইল নিয়েছিলাম এবং একটি করেছি git reset --hard, যা কোনও অজানা ফ্যাশনে আমার রেপোকে গোলমাল করেছিল। @ ডানকান, @ {1} কী করে? এবং আপনি কোন মন্তব্য উল্লেখ করছেন? এটি একটি পুনরায় সেট করা হয় git reset?
alpha_989

আমি মনে করি যে @ {1 হ'ল শেষ কিন্তু একটি প্রতিশ্রুতিবদ্ধতার তুলনামূলক একটি রেফারেন্স, তবে আমি কোনও বিশেষজ্ঞ নই, কেবল আমার জন্য কী কাজ করেছে তা জানাচ্ছি
ডানকান ম্যাকগ্রিগোর

3

একই ইস্যুতে ছড়িয়ে পড়ে, তবে সূচিতে পরিবর্তনগুলি যুক্ত করেনি। সুতরাং উপরের সমস্ত কমান্ড আমাকে পছন্দসই পরিবর্তনগুলি ফিরিয়ে আনেনি।

উপরের সমস্ত বিস্তৃত জবাবের পরে, এটি একটি নিষ্পাপ ইঙ্গিত, তবে এটি এমন কাউকে বাঁচাতে পারে যে আমি আগে যেমন এটি সম্পর্কে ভেবে দেখিনি, সেভাবেই করব।

হতাশায় আমি নিজের সম্পাদকের (লাইট টেবিল) সিটিআরএল-জেড টিপতে চেষ্টা করেছি, প্রতিটি খোলা ট্যাবে একবার - এটি ভাগ্যক্রমে সেই ট্যাবে থাকা ফাইলটি তার সর্বশেষ অবস্থাতে পুনরুদ্ধার করেছিল git reset --hard। আছে HTH।


1
ঠিক একই পরিস্থিতি, সূচীতে যোগ করতে মিস করে এবং হার্ড রিসেট করে এবং এর সমাধানগুলির কোনওটিই উপরে কাজ করে না। এটি একটি স্মার্ট পদক্ষেপ ছিল, ধন্যবাদ আমি Ctrl + Z করেছি এবং আমার দিনটি সংরক্ষণ করেছি। আমার সম্পাদক: সাব্লাইম টেক্সট। আমার পাশ থেকে একজন!
বিবেক

1

এটি সম্ভবত গিট পেশাদারদের কাছে সুস্পষ্ট, তবে আমি এটি প্রকাশ করতে চেয়েছিলাম কারণ আমার খাঁটি অনুসন্ধানে আমি এটিকে সামনে আনতে দেখিনি।

আমি কিছু ফাইল মঞ্চস্থ করেছিলাম এবং একটি করেছিলাম git reset --hard, কিছুটা অল্প করে প্রকাশ করেছি এবং তারপরে লক্ষ্য করেছি যে আমার স্ট্যাটাসটি আমার সমস্ত ফাইল এখনও স্টেজেড পাশাপাশি তাদের সমস্ত মুছে ফেলা নিয়ন্ত্রণহীন দেখায়।

এই মুহুর্তে আপনি যতক্ষণ না তাদের মুছে ফেলা না করেন ততক্ষণ আপনি এই পর্যায়যুক্ত পরিবর্তনগুলি করতে পারেন। এর পরে, আপনাকে কেবলমাত্র আরও একবার করার সাহস অবলম্বন করতে হবে git reset --hard, যা আপনি যে পরিবর্তনগুলি শুরু করেছিলেন এবং এখনই প্রতিশ্রুতিবদ্ধ করেছিলেন সেগুলি ফিরিয়ে আনবে।

আবার এটি সম্ভবত বেশিরভাগ ক্ষেত্রেই নতুন কিছু নয় তবে আমি আশা করছি যেহেতু এটি আমাকে সহায়তা করেছে এবং এটির পরামর্শ দেওয়ার মতো কোনও কিছুই আমি খুঁজে পাইনি, এটি অন্য কাউকে সাহায্য করতে পারে।


1

ধার্মিকতা, আমি এই প্রশ্ন এবং এর উত্তরগুলিতে না ছড়িয়ে আমি আমার চুল টানলাম। আমি বিশ্বাস করি যে জিজ্ঞাসিত প্রশ্নের সঠিক এবং সংক্ষিপ্ত উত্তর কেবল তখনই পাওয়া যাবে যদি আপনি উপরের দুটি মন্তব্য একসাথে টানেন তবে এখানে এটি সমস্ত স্থানে রয়েছে:

  1. Chilicuil দ্বারা উল্লিখিত হিসাবে git reflog, আপনি ফিরে পেতে চান প্রতিশ্রুতিবদ্ধ হ্যাশ চিহ্নিত করতে চালান

  2. আকিমসকো দ্বারা উল্লিখিত হিসাবে, আপনি সম্ভবত একটি প্রতিশ্রুতি না হারিয়ে আপনি চেরি পিক করতে চান না, সুতরাং আপনার তখন চালানো উচিত git reset --hard <hash-commit-you-want>

উদাগ্রহীগ্রহণগ্রহণ ব্যবহারকারীদের জন্য দ্রষ্টব্য: আমি উদাহরণ সহকারে Eclipse এর মধ্যে এই পদক্ষেপগুলি করার কোনও উপায় খুঁজে পেলাম না। উপগ্রহটি বন্ধ করে, টার্মিনাল উইন্ডো থেকে উপরের কমান্ডগুলি চালনা করা এবং তারপরে পুনরায় খোলার কাজটি আমার পক্ষে ঠিক কাজ করেছিল।


0

উপরের সমাধানগুলি কাজ করতে পারে, তবে git-s জটিল পূর্বাবস্থায় ফিরে যাওয়ার পরিবর্তে এ থেকে পুনরুদ্ধার করার সহজ উপায় রয়েছে । আমি অনুমান করব যে বেশিরভাগ গিট-রিসেটগুলি অল্প সংখ্যক ফাইলে ঘটে এবং আপনি যদি ইতিমধ্যে ভিআইএম ব্যবহার করেন তবে এটি সবচেয়ে কার্যকর সময় সমাধান হতে পারে। সতর্কবাণীটি হ'ল আপনার অবশ্যই ইতিমধ্যে ViM'sধ্রুবক-পূর্বাবস্থায় ব্যবহার করা উচিত, যা আপনার যে কোনও উপায়ে ব্যবহার করা উচিত, কারণ এটি আপনাকে সীমাহীন পরিবর্তনগুলিকে পূর্বাবস্থায় ফেলার ক্ষমতা সরবরাহ করে।

পদক্ষেপ এখানে:

  1. ভিমে প্রেস :করে কমান্ডটি টাইপ করুন set undodir। আপনি যদি এটি persistent undoচালু করে থাকেন তবে .vimrcএটির মতো ফলাফল দেখাবে undodir=~/.vim_runtime/temp_dirs/undodir

  2. আপনার রেপো ব্যবহারের git logশেষ তারিখ / সময় আপনি শেষ প্রতিশ্রুতিবদ্ধ তা খুঁজে বের করতে

  3. আপনার শেল আপনার undodirব্যবহার নেভিগেট cd ~/.vim_runtime/temp_dirs/undodir

  4. এই ডিরেক্টরিতে আপনি সর্বশেষ প্রতিশ্রুতিবদ্ধতার পরে পরিবর্তন করেছেন এমন সমস্ত ফাইল সন্ধান করতে এই আদেশটি ব্যবহার করুন

    find . -newermt "2018-03-20 11:24:44" \! -newermt "2018-03-23" \( -type f -regextype posix-extended -regex '.*' \) \-not -path "*/env/*" -not -path "*/.git/*"

    এখানে "2018-03-20 11:24:44" হল সর্বশেষ কমিটের তারিখ এবং সময়। আপনি যে তারিখটি git reset --hard"2018-03-22" করেছেন সেটি যদি "2018-03-22" হয় তবে "2018-03-23" ব্যবহার করুন -2 এটি সন্ধানের এক তাত্ক্ষণিক কারণে, যেখানে নিম্ন সীমানাটি অন্তর্ভুক্ত এবং উপরের সীমাটি একচেটিয়া। https://unix.stackexchange.com/a/70404/242983

  5. এরপরে ফাইলগুলির প্রত্যেকের কাছে সেগুলি ভিএম-তে খুলুন এবং একটি "পূর্ববর্তী 20 মি" করুন। আপনি "h" এর আগে "h" ব্যবহার করে আরও বিশদ জানতে পারেন। এখানে earlier 20mফাইল 20 মিনিট পিছনে রাষ্ট্রের গড় ফিরে যান অভিমানী যে, তুমি পেরেছ git hard --reset, 20 মিনিট ফিরে। findকমান্ড থেকে ছিটানো সমস্ত ফাইলের উপরে এটি পুনরাবৃত্তি করুন । আমি নিশ্চিত যে কেউ এই স্ক্রিপ্ট লিখতে পারে যা এই জিনিসগুলিকে একত্রিত করবে।


0

আমি ইন্টেলিজ ব্যবহার করছি এবং প্রতিটি ফাইলের মধ্যে দিয়ে যেতে সক্ষম হয়েছি:

Edit -> reload from disk

ভাগ্যক্রমে, আমি git statusআমার কাজের পরিবর্তনগুলি নিশ্চিহ্ন করার আগে একটি সঠিক কাজ করেছিলাম, তাই আমাকে কী পুনরায় লোড করতে হয়েছিল তা আমি ঠিক জানি।


0

আপনার ফাইলের শ্রেণিবিন্যাস মনে রাখা এবং ফিল ওকলে পরিবর্তনের সাথে মার্ক লংয়েরের কৌশলটি ব্যবহার করে নাটকীয় ফলাফল পাওয়া যায়।

মূলত যদি আপনি কমপক্ষে ফাইলগুলি রেপোতে যুক্ত করেন তবে এটি প্রতিশ্রুতিবদ্ধ না হন তবে আপনি ইন্টারেক্টিভভাবে ব্যবহার করে পুনরায় পুনরুদ্ধার করতে পারবেন git show, লগটি পরীক্ষা করতে পারবেন এবং প্রতিটি ফাইল তৈরির জন্য শেল পুনঃনির্দেশ ব্যবহার করতে পারেন (আপনার আগ্রহের পথটি মনে রেখে)।

আছে HTH!


0

আপনি যদি সম্প্রতি কোনও পর্যালোচনা করে থাকেন git diffতবে এরপরে ঘটনার পুনরুদ্ধারের আর একটি উপায় রয়েছে, এমনকি যদি আপনি এখনও পরিবর্তনগুলি মঞ্চায়িত করেননি: যদি আউটপুটটি git diffএখনও আপনার কনসোল বাফারে থাকে তবে আপনি কেবল স্ক্রোল করতে পারেন, কপি-পেস্ট করুন একটি ফাইলে পরিবর্তন এবং ব্যবহার patchআপনার গাছকে পরিবর্তন প্রয়োগ করতে টুল: patch -p0 < file। এই পদ্ধতিটি আমাকে কয়েকবার বাঁচিয়েছিল।

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