গিট রিসেট থেকে পুনরুদ্ধার --হরড?


457

একটি থেকে ওয়ার্কিং ডিরেক্টরিতে বিনা অনুমতিতে পরিবর্তনগুলি পুনরুদ্ধার করার কোনও উপায় আছে কি git reset --hard HEAD?


49
আমি আনলিনিয়িংয়ের প্রস্তাব দিই git reset। আপনার সেই আদেশের দরকার নেই এবং এটি বিপজ্জনক, সুতরাং এটি ব্যবহার করবেন না। পূর্বের প্রতিশ্রুতিতে শাখাটি ফেরত পাঠাতে git rebase -iএবং আপনি চান না এমন git checkoutকমিটগুলি বাদ দিন বা (মাথা বিচ্ছিন্ন করে) অনুসরণ করে git branch -Mশাখার ডগা সরিয়ে ফেলুন। প্রথমটি স্থানীয় পরিবর্তনগুলির সাথে চালিত হতে অস্বীকার করবে এবং পরে কেবল তখন চালানো হবে যখন স্থানীয়ভাবে পরিবর্তিত ফাইলগুলি সংশোধনগুলির মধ্যে পার্থক্য না করে।
জান হুডেক

11
@ জান আমি এটা বিশ্বাস করি না। রিসেট ব্যবহারের সঠিক বৈধ কারণ রয়েছে।
spaaarky21

4
@ স্পাআরকি 21: হ্যাঁ, আছে। তবে git reset --hard somewhereসত্যিই বিপজ্জনক গিট কমান্ডগুলির মধ্যে একটি।
জানু হুডেক

5
@ জান আমি সম্মত তবে এটি বিপজ্জনক হওয়ার অর্থ এই নয় যে আপনার এটি ব্যবহার করা উচিত নয়। আপনি কী করছেন তা কেবল জানুন এবং সাবধান হন। :)
spaaarky21

3
গিট রিসেটটি পূর্বাবস্থায় ফেলার সাথে সম্পর্কিত নয় - হ্যাড হেড hard 1 , কারণ এখানে মূল পোস্টারটি অনির্দিষ্ট পরিবর্তনগুলি পুনরুদ্ধার করার চেষ্টা করছে।

উত্তর:


474

আপনি সাধারণভাবে অনির্ধারিত পরিবর্তনগুলি ফিরে পেতে পারেন না

পূর্বে মঞ্চস্থ হওয়া পরিবর্তনগুলি ( git add) সূচিপত্রের থেকে পুনরুদ্ধারযোগ্য হওয়া উচিত, সুতরাং যদি আপনি তা করেন তবে এর git fsck --lost-foundসাথে সম্পর্কিত বিষয়গুলি সনাক্ত করতে ব্যবহার করুন । (এটি .git/lost-found/ডিরেক্টরিতে অবজেক্টগুলিকে লিখে দেয় ; সেখান থেকে আপনি git show <filename>প্রতিটি ফাইলের সামগ্রী দেখতে ব্যবহার করতে পারেন))

যদি তা না হয় তবে এখানে উত্তরটি হবে: আপনার ব্যাকআপটি দেখুন। সম্ভবত আপনার সম্পাদক / আইডিই টেম্পুলি অনুলিপিগুলি / টিএমপি বা সি এর অধীনে সঞ্চয় করে : and টিইএমপি এবং এর মতো জিনিস। [1]

git reset HEAD@{1}

এটি পূর্ববর্তী হেডে পুনরুদ্ধার করবে

[১] ভিআইএম যেমন allyচ্ছিকভাবে অবিচ্ছিন্ন পূর্বাবস্থায় সঞ্চয় হয়, গ্রহন আইডিই স্থানীয় ইতিহাস সংরক্ষণ করে ; এই জাতীয় বৈশিষ্ট্যগুলি আপনার একটি ** সংরক্ষণ করতে পারে


18
গ্রহণের স্থানীয় ইতিহাস - এবং তদতিরিক্ত, যেহেতু কিছু পরিবর্তনগুলি 6 দিনেরও বেশি পুরানো ছিল, তাই আমার সময়গ্রহনের স্থানীয় ইতিহাসের টাইম মেশিনের ব্যাকআপ! কিছু কারণে গিট দ্বারা পরিচালিত ফোল্ডারের টাইম মেশিন ব্যাকআপটিতে আমার আগের পরিবর্তনগুলি অন্তর্ভুক্ত ছিল না।
খ্রিস্টিয়ানব্রোডবেক

2
আপনি একটি গুরুতরভাবে ইঙ্গিত একটি জীবন রক্ষাকারী! টেক্সটরঙ্গলারের কাছে ফাইলগুলির একটি ব্যাকআপ ছিল। ধন্যবাদ
বিবেক সাম্পারা

6
আইডিই (ইন্টেলিজ) স্থানীয়ভাবে পরিবর্তনগুলি সংরক্ষণ করে যা দিনটি সংরক্ষণ করে। ভকভগক!
প্রগনকপা

1
বাহ এটা আশ্চর্যজনক। আপনি কখনও প্রতিশ্রুতিবদ্ধ না হলেও এটি কাজ করে।
বুদেউইজন আসমান

2
বাস্তবে Eclipse এর স্থানীয় ইতিহাস (আমার ক্ষেত্রে ইন্টেলিজ) আমার দিনটি অস্তিত্বহীন পরিবর্তনগুলি পুনরুদ্ধার করতে বাঁচায়, ইন্টেলিজের জন্য এখানে ডক: ব্লগ.জেটব্রেইনস
রিচার্ড

448

এই এসও থেকে উত্তর

$ git reflog show
93567ad HEAD@{0}: reset: moving to HEAD@{6}    
203e84e HEAD@{1}: reset: moving to HEAD@{1}    
9937a76 HEAD@{2}: reset: moving to HEAD@{2}
203e84e HEAD@{3}: checkout: moving from master to master
203e84e HEAD@{4}: reset: moving to HEAD~1
9937a76 HEAD@{5}: reset: moving to HEAD~1
d5bb59f HEAD@{6}: reset: moving to HEAD~1
9300f9d HEAD@{7}: commit: fix-bug

# said the commit to be recovered back is on 9300f9d (with commit message fix-bug)
$ git reset HEAD@{7}

আপনি আপনার দিন ফিরে পেয়েছিলাম! :)


24
কেবলমাত্র এই উত্তরে যুক্ত করার ফলে এটি এমন লোকদের সহায়তা করবে যারা সত্যিকার অর্থে এমন পরিবর্তনগুলি করেছিলেন যা হার্ড রিসেটের মাধ্যমে ফেলে দেওয়া হয়েছিল।
মুরকি

9
দুর্দান্ত - তবে আমার ক্ষেত্রে ফাইলগুলি পুরোপুরি চলে গেছে। ব্যবহার করে git checkout HEAD@{19}আমাকে বিচ্ছিন্ন অবস্থায় হারিয়ে যাওয়া ফাইলগুলি পরীক্ষা করে দেখার অনুমতি দেয় allowed তারপরে git checkout -b new-branch-nameএগুলিকে "সংযুক্ত" অবস্থায় পুনরায় রেপোতে যুক্ত করতেন।
নাইটওয়েল 888

@ নাইটওয়েল ৮৮৮: এখানে নবাগত গিট এবং আমার একই সমস্যা ছিল যে আমার ফাইলগুলি এখনও গেছে। আপনি কীভাবে আপনার ফাইলগুলিকে একটি "সংযুক্ত" অবস্থায় পুনরুদ্ধার করেছেন (বা আপনি আসলে এর অর্থ কী তা ব্যাখ্যা করতে পারেন) আরও বিশদে ব্যাখ্যা করতে পারেন? তোমাকে অনেক ধন্যবাদ!
OhDaeSu

3
@ ব্যবহারকারী 3385759 - গিতে, আপনি যখন শাখা নয় এমন কোনও বিষয়ে চেকআউট কমান্ডটি ব্যবহার করবেন, এটি একটি বিশেষ "বিচ্ছিন্ন মাথা" মোডে যাবে। এর অর্থ আপনি প্রকৃতপক্ষে কোনও শাখায় নির্দেশ করছেন না, তবে সত্তার স্থিতিতে যা পরীক্ষা করা হয়েছিল তা আপনি দেখতে পারেন (এই ক্ষেত্রে একটি রিফ্লগ এন্ট্রি)। সেই অবস্থা থেকে, আপনি এটিকে একটি "আসল" শাখায় পরিণত করতে পারেন যা ব্যবহার করে আপনি আবার যেতে পারেন git checkout -b new-branch-nameপ্রিটমেটিক ভার্সন কন্ট্রোল ইউজিং গিট বইটি সহজ ভাষায় গিটকে ব্যাখ্যা করার পক্ষে ভাল।
নাইটওয়েল 888

2
হ্যাঁ, NomNomCameron এবং জেসি অ্যাডেলম্যান কী বলেছিলেন। আমি ভুল করে ভেবেছিলাম রিসেটটি আমার শেষ প্রতিশ্রুতিতে পুনরায় সেট হবে। নাঃ। এটি সবকিছু মুছে দিয়েছে। এই উত্তরটি আমার কাজটি নতুন করে তৈরি করার এক-দু'দিন থেকে আমাকে বাঁচিয়েছে।
ভেটেরন কোডার

308

আমি git reset --hardআজও দুর্ঘটনাক্রমে আমার রেপোতে দৌড়েছি যখন আজ খুব আপত্তিহীন পরিবর্তন রয়েছে। এটি ফিরে পেতে, আমি দৌড়ে এসেছি git fsck --lost-found, যা এতে সমস্ত অনর্থিত ব্লব লিখেছিল <path to repo>/.git/lost-found/। যেহেতু ফাইলগুলি অনমুক্ত ছিল, তাই আমি তাদের otherডিরেক্টরিতে খুঁজে পেয়েছি <path to repo>/.git/lost-found/। সেখান থেকে, আমি uncommitted ফাইলগুলি দেখতে, ব্লবগুলি git show <filename>অনুলিপি করে তাদের নতুন নাম দেখতে পাচ্ছি ।

দ্রষ্টব্য: আপনি কেবল সূচকগুলিতে (ব্যবহার করে git add .) সংরক্ষণ করতে চান এমন ফাইলগুলি যুক্ত করলে এটি কেবলমাত্র কাজ করে । ফাইলগুলি যদি সূচকে না থাকে তবে সেগুলি হারিয়ে যায়।


4
আমি কমিট রেফারেন্স সহ কেবলমাত্র ফাইল পেয়েছি lost-found। তবে আমি তখন git showসামগ্রীগুলি পেতে পারি ।
মিটার

6
যে কারও সময় বাঁচানোর জন্য#!/bin/bash cd PATH_TO_PROJECT/.git/lost-found/other FILES=* COUNTER = 0 for f in $FILES do echo "Processing $f file..." git show $f > "PATH_TO_RECOVERY_DIRECTORY/$COUNTER.m" let COUNTER=COUNTER+1 done
rwolst

209

হ্যাঁ, আপনি গিটে হার্ড রিসেট থেকে পুনরুদ্ধার করতে পারেন

ব্যবহার করুন:

git reflog

আপনার প্রতিশ্রুতি সনাক্তকারী পেতে। তারপরে ব্যবহার করুন:

git reset --hard <commit-id-retrieved-using-reflog>

এই কৌশলটি আমার জীবনকে কয়েকবার বাঁচিয়েছিল।

আপনি এখানে প্রত্যাবর্তনের ডকুমেন্টেশন খুঁজে পেতে পারেন ।


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

2
একটি যাদুমন্ত্র মত কাজ করে! পূর্ববর্তী উত্তর ( স্ট্যাকওভারফ্লো / প্রশ্ন / 578৮৮০3737 / recover-from-git-reset-hard/… ) আমার পক্ষে কাজ করে নি।
কোডম্যাক্স

3
এই উত্তরটি সঠিক নয়। এই পদ্ধতিটি কেবল পূর্বে প্রতিশ্রুতিবদ্ধ পরিবর্তনগুলি পুনরুদ্ধার করে । এটি অনির্ধারিত পরিবর্তনগুলি পুনরুদ্ধার করতে সক্ষম হবে না (যা এই প্রশ্নটি সম্পর্কে রয়েছে)।
অ্যালাদারথ

2
এই সমাধানগুলি আমার পক্ষে কাজ করে। আমি একটি হার্ড রিসেট করেছি এবং তারপরে আমি যখন ব্যবহার git logকরি তখন কমিটের আইডি দেখতে পেলাম না। সাথে git reflogআমি কমিট আইডি দেখতে
পেলাম

2
এটা আমার জন্য কাজ করে। ধন্যবাদ !!!!!!
শে

60

আমি একটি স্থানীয় প্রকল্পে কাজ করার সময়, আমি এটিকে গিটহাবে স্থানান্তর করতে চেয়েছিলাম এবং তারপরে একটি নতুন সংগ্রহশালা তৈরি করতে চাই। আমি .gitignore দিয়ে এই নতুন ফাইলগুলি নতুন সংগ্রহশালায় যুক্ত করার চেষ্টা করার সময়, আমি ঘটনাক্রমে একটি ভুল ফাইল যুক্ত করেছি এবং তারপরে এটি সাফ করার চেষ্টা করেছি।

আমি দৌড়ে git reset --hard origin/master: পি

তারপরে আমার স্থানীয় সমস্ত ফাইল মুছে ফেলা হয়েছে কারণ রেপো খালি ছিল। ভেবেছিলাম সব শেষ হয়ে গেছে।

এটি আমার জীবন রক্ষা করেছে:

git reflog show
git reset HEAD@{1} 
git push 

আশা করি এটি অন্য জীবন বাঁচায়।


আমার জন্য, এটি ছিল git reset HEAD@\{27\} , আপনাকে ধন্যবাদ!
4oby

1
আমার পুনঃস্থাপনের জন্য 7 টি কমিট রয়েছে, আমি git reflog showচেক করতে ব্যবহার করি এবং সেই প্রথম প্রতিশ্রুতিটি ব্যবহার করিgit reset HEAD@{number}
বিশ্বাস নাহার

38

আপনি যদি ইন্টেলিজের মতো কিছু ব্যবহার করেন:

প্রসঙ্গ মেনুতে, স্থানীয় ইতিহাস নির্বাচন করুন এবং সাবমেনুতে ইতিহাস দেখান ক্লিক করুন:

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

http://blog.jetbrains.com/idea/2008/01/using-local-history-to-restore-deleted-files/

এই মাত্র আমার গাধা আগুন লাগিয়ে!


এটি এখন পর্যন্ত ইন্টেলিজিজ ব্যবহারকারীদের জন্য সেরা উত্তর! আপনাকে অনেক ধন্যবাদ, এটি নিখুঁতভাবে কাজ করেছে। আমি অন্যান্য প্রতিটি সমাধান চেষ্টা করেছিলাম এবং তাদের কোনওটিই ভাল কাজ করেনি। git reflogআমি পরিবর্তনগুলি প্রতিশ্রুতিবদ্ধ না কারণ কাজ করে না। git fsck --lost-foundমঞ্চযুক্ত ফাইলগুলির জন্য কাজ করেছে তবে সেগুলির সবই মঞ্চস্থ হয়নি। ইন্টেলিজের স্থানীয় ইতিহাস আমার সংরক্ষিত ফাইলগুলি নিখুঁতভাবে পুনরুদ্ধার করেছে, আমি এই বৈশিষ্ট্যের জন্য অত্যন্ত কৃতজ্ঞ
ডেনস প্যাপ

30

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


19

সংজ্ঞা অনুসারে, git reset --hardগিটকে পুনরুদ্ধারের কোনও উপায় ছাড়াই নিরীক্ষিত পরিবর্তনগুলি ফেলে দেবে (আপনার ব্যাকআপ সিস্টেমটি সাহায্য করতে পারে, তবে গিট নয়)।

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

  • আপনি যদি আপনার আপত্তিহীন পরিবর্তনগুলি ফেলে দিতে চান তবে ব্যবহার করুন git stash। এটি এই পরিবর্তনগুলির একটি ব্যাকআপ রাখে, যা আপনি চালনা করে কিছু সময়ের পরে শেষ হবে git gc। আপনি যদি ৯৯.৯% নিশ্চিত হন তবে আপনার আর কখনও এই পরিবর্তনগুলির প্রয়োজন হবে না, তবে git stash0.1% ক্ষেত্রে এখনও আপনার বন্ধু। আপনি যদি 100% নিশ্চিত হন তবে git stashতা এখনও আপনার বন্ধু কারণ এই 100% এর একটি পরিমাপের ত্রুটি রয়েছে ;-)।

  • আপনি যদি HEADইতিহাসে বর্তমান এবং বর্তমান শাখার ডগা সরিয়ে নিতে চান তবে git reset --keepআপনার বন্ধু। এটি একই কাজ git reset --hardকরবে তবে এটি আপনার স্থানীয় পরিবর্তনগুলি ত্যাগ করবে না

  • আপনি যদি উভয়ই করতে চান তবে git stash && git reset --keepআপনার বন্ধু।

আপনার আঙ্গুলগুলি ব্যবহার না করতে শেখান git reset --hard, এটি একদিন ফেরত দেবে।


সুতরাং কেউ যদি git stash && git reset --hardকোনও স্ট্যাশড সামগ্রী মুছে ফেলতে পারে তবে তা সঠিক?
jxramos

1
না, git reset --hardস্ট্যাশ ফেলে না এই অর্থে git stashএটি একটি প্রতিস্থাপন git reset --hardযে এটি আপনার কর্মক্ষেত্র থেকে আপত্তিজনক পরিবর্তনগুলি সরিয়ে দেয়, এগুলি স্থায়ীভাবে তাড়িয়ে দেওয়ার পরিবর্তে এগুলি নিরাপদ রাখে।
ম্যাথিউ ময়

অথবা আপনি হার্ড রিসেট করার আগে কেবলমাত্র আপনার পরিবর্তনগুলি প্রতিশ্রুতিবদ্ধ করুন এবং সেগুলি এখনও আপনার স্থানীয়
রেপোতে থাকবে

11

যদি আপনি দুর্ঘটনাক্রমে শক্ত প্রতিশ্রুতি পুনরায় সেট করেন, তবে এটি করুন,

git reflog show
git reset HEAD@{2} // i.e where HEAD used to be two moves ago - may be different for your case

ধরে HEAD@{2}নেওয়া সেই রাজ্য যা আপনি ফিরে যেতে চান is


এটি আমার জন্য নিখুঁত কাজ করেছে যদি আপনি পাওয়ারশেলের উপর এটি করেন তবে এই গিট রিসেটের মতো এটি লিখতে ভুলবেন না 'হেড @ {2}' অন্যথায় পাওয়ারশেলে কাজ করবে না
ভেক্টরএক্স

10

আমি কিছু পরিবর্তন হারিয়ে ফেললে সাধারণত আমি এটি করি।

git reflog
git checkout <commit id> // now you are in where you want but you cannot push from detached branch to master
manually copy and paste changes from detached branch to master or working branch
git reset --hard HEAD // if needed
git add ... > git commit ... > git push ...

পয়েন্টারটি আপনার পূর্ববর্তী কমিটগুলিতে ফিরে যেতে তবে আপনি আপনার সর্বশেষ কমিটস চেকআউটটিতে এ পর্যন্ত পরিবর্তনগুলি রেখেছেন git reset --soft dadada


8

তথ্য হারিয়ে গেছে।

যেহেতু আপনি প্রতিশ্রুতিবদ্ধ হন নি, আপনার .git কখনই এই তথ্য সংরক্ষণ করে না। সুতরাং, মূলতgit আপনার পক্ষে পুনরুদ্ধার করতে পারে না।

তবে, আপনি যদি এখনই এটি git diffকরেন তবে নীচের 3 টি সহজ পদক্ষেপের সাহায্যে টার্মিনাল আউটপুটটি ব্যবহার করে আপনি পুনরুদ্ধার করতে পারেন।

  1. আপনার টার্মিনালটি স্ক্রোল করুন এবং এর o / p সন্ধান করুন git diff। ডিফফ্যাচ নামে একটি ফাইলে o / p সংরক্ষণ করুন
  2. ট্যাব () t) অক্ষরের সাহায্যে সমস্ত 7 টি স্পেস এবং 8 টি স্পেস অনুসন্ধান করুন এবং প্রতিস্থাপন করুন the
  3. আপনার গিট ভাণ্ডারে যান। Diff.patch প্রয়োগ করুন ( patch -p1 < diff.patch)

তুমি বাঁচাও! :)

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


7

আমি একই ইস্যুতে দৌড়ে গিয়েছিলাম এবং আমি প্রায় উন্মাদ হয়ে যাচ্ছিলাম .... প্রথমদিকে আমি প্রকল্পটি প্রতিশ্রুতিবদ্ধ করেছি এবং একীভূত হয়েছি .. পরে যখন আমি চালানোর চেষ্টা করছিলাম তখন আমি git push --set-upstream origin master এই ত্রুটিটি পেয়েছিলাম

  fatal: refusing to merge unrelated histories

সুতরাং আমি দৌড়ে গিয়েছিলাম git reset --hard HEADএবং এটি একটি 3 সপ্তাহের প্রকল্প মুছে ফেলেছিল তবে নীচে এই কয়েকটি কমান্ড দিনটি সংরক্ষণ করে:

git reset HEAD@{1}         //this command unstage changes after reset
git fsck --lost-found      //I got the dangling commit fc3b6bee2bca5d8a7e16b6adaca6a76e620eca4b
git show <dangling commit something like-> fc3b6bee2bca5d8a7e16b6adaca6a76e620eca4b>
git rebase fc3b6bee2bca5d8a7e16b6adaca6a76e620eca4b

আশাকরি এটা সাহায্য করবে


6

আপনি একটি করার পরে একটি প্রতিশ্রুতি ফিরে পেতে পারেন reset --hard HEAD

শাখায় git reflogইতিহাসের ইতিহাস পরীক্ষা করতে " " ব্যবহার করুন HEAD

আপনি এখানে আপনার প্রতিশ্রুতিবদ্ধকরণ এবং এর আইডি দেখতে পাবেন।

git reset {commit Id of the commit you want to bring back}

5

ভাগ্যক্রমে আপনি যদি একই সম্পাদকীয়ভাবে অন্য সম্পাদকটিতে খোলেন (যেমন, উত্সাহ পাঠ্য) সেগুলির জন্য একটি ctrl-z চেষ্টা করুন। এটি আমাকে বাঁচিয়েছে ..


3

git reset --hard <commit>গিটারের ইতিহাস থেকে মুছে ফেলার আগে যে কোনও আপত্তিহীন ফাইলগুলি খুঁজে পেলাম way তবে আমি যথেষ্ট ভাগ্যবান যে আমার কোড এডিটর সেশনটি আমি আমার চুলগুলি টানতে থাকাকালীন পুরো সময়টিতে উন্মুক্ত রেখেছিলাম, আমি আবিষ্কার করেছি যে control + zপ্রতি প্রভাবিত ফাইলগুলির মধ্যে একটি সাধারণ ফাইলটি গিতের আগে সংস্করণে ফিরিয়ে দিয়েছিল আমি বিশেষভাবে এটি জিজ্ঞাসা করি নি এমন সমস্ত কিছু বাধ্যতার সাথে পুনরায় সেট করুন।Hooray!!


3

আপনি যদি নীচের কোডটি ব্যবহার করার চেষ্টা করছেন:

git reflog show
# head to recover to
git reset HEAD@{1} 

এবং কোনও কারণে পাচ্ছেন:

ত্রুটি: অজানা সুইচ `ই '

তারপরে HEAD@{1}উদ্ধৃতিগুলিতে মোড়ানো চেষ্টা করুন

git reset 'HEAD@{1}'

3
 git reset HEAD@{4}

4 পদক্ষেপ আগে 4 পরিবর্তন হয়। আপনি যদি একটি সঠিক পদক্ষেপ নির্বাচন করেন তবে এটি ফাইলগুলির তালিকা প্রদর্শন করা উচিত যা আপনি হার্ড থেকে সরিয়েছেন। তারপরে:

$ git reflog show

এটি আপনাকে ইতিমধ্যে তৈরি করা স্থানীয় প্রতিশ্রুতিবদ্ধ ইতিহাস দেখায়। এখন কর:

$ git reset --hard 8c4d112

8c4d112 এমন একটি কোড যা আপনি সেখানে নিজের হার্ডটি পুনরায় সেট করতে চান। আরও তথ্যের জন্য https://www.theserverside.com/video/How-to-use-the-git-reset-hard-command-to-change-a-commit-history এ দেখুন


অনেক ধন্যবাদ @ মুহাম্মদ, এটি আমাকে বাঁচিয়েছে। আমি আমার উত্স ফাইলগুলি আগে দেখতে পেলাম না, তবে উপরের পদক্ষেপগুলি অনুসরণ করে আমি আমার সমস্ত উত্স ফাইলগুলি পুনরুদ্ধার করতে সক্ষম হয়েছি।
গৌরব বানসাল

2

সঠিক উত্তরসমূহ. ঠিক আছে, এখন আমি গিট পছন্দ করি :-) এখানে একটি সহজ রেসিপি।

git log HEAD@{2}
git reset --hard  HEAD@{2}

"2" যেখানে আপনি নিজের পরিবর্তনগুলি প্রতিশ্রুতিবদ্ধ সেখানে ফিরে যাওয়ার সংখ্যা। আমার ক্ষেত্রে, সহকর্মী এবং মনিবদের দ্বারা বাধাগ্রস্ত হয়ে কিছু বিল্ড ইস্যুকে ডিবাগ করতে সহায়তা করে; সুতরাং, একটি পুনরায় সেট - দুইবার; সুতরাং, হেড এবং হেড @। 1 over ওভার-রাইট ছিল। হ্যাঁ, আমাদের কঠোর পরিশ্রম হারিয়ে ফেলত।


2

আমি করেছিলাম git reset --hard ভুল করে ভুল প্রকল্পে করেছি (আমি জানি ...) এবং ভেবেছিলাম আমি কাজ হারাতে যাচ্ছি। ভাগ্যক্রমে আমি একটি ফাইলে কাজ করেছি এবং এটি কমান্ড চলাকালীন এখনও খোলা ছিল।

সুতরাং, যদিও আমি প্রতিশ্রুতিবদ্ধ না করেও আমি এটি দিয়ে পুরানো ফাইলটি পুনরুদ্ধার করতে সক্ষম হয়েছি COMMAND + Zএবং এটি কার্যকর হয়েছে!

সুতরাং, চেষ্টা করুন COMMAND + Z


0

এই এসও থেকে রেফারেন্স উত্তর,

গিট রিফ্লোগ শো চালানোর পরে বলুন আপনি 9300f9d কমিট করতে চান

গিট রিসেটের পরে 9300f9d রিসেট করুন

আপনি গিট স্ট্যাটাসটি করতে পারেন এবং তারপরে আপনার পরিবর্তনগুলি পুনরুদ্ধার করতে আপনার ফাইল (গুলি) পরীক্ষা করতে হবে

গিট চেকআউট - ফাইলপথ / নাম


0

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


0

( ব্যবহারকারীদের উপসেটের জন্য উপযুক্ত উত্তর )

আপনি যদি (কোনও সাম্প্রতিক) ম্যাকোএস চালু থাকেন এবং এমনকি আপনি আপনার টাইম মেশিন ডিস্ক থেকে দূরে থাকেন তবে ওএসগুলি স্থানীয় স্ন্যাপশট নামে পরিচিত প্রতি ঘন্টা ব্যাকআপগুলি সংরক্ষণ করবে ।

টাইম মেশিন প্রবেশ করুন এবং আপনার হারিয়ে যাওয়া ফাইলটিতে নেভিগেট করুন। এর পরে ওএস আপনাকে জিজ্ঞাসা করবে:

The location to which you're restoring "file.ext" already contains an
item with the same name. Do you want to replace it with the one you're
restoring?

আপনি যে ফাইলটি হারিয়েছেন তা পুনরুদ্ধার করতে সক্ষম হওয়া উচিত।


0

যদি আপনার একই কোড সহ কোনও আইডিই খোলা থাকে তবে প্রতিটি পরিবর্তিত ফাইলের জন্য একটি সিটিআরএল + z করার চেষ্টা করুন। এটি আমাকে গিট পুনরায় সেট করার পরে - আমার পুনর্নির্বাচিত পরিবর্তনগুলি পুনরুদ্ধার করতে সহায়তা করে।


-3

যখন আমরা গিট রিসেট করি - এবং স্থানীয় সমস্ত আপত্তিজনক পরিবর্তন মোছা হয়। পরিবর্তনগুলি পুনরুদ্ধার করতে - আইডিইতে ফাইলটিতে ক্লিক করুন, স্থানীয় ইতিহাসের সাথে ফাইলটির তুলনা করুন যা তারিখ অনুসারে পরিবর্তনগুলি তালিকাভুক্ত করবে এবং আমরা তথ্য পুনরুদ্ধার করতে পারি। আপনার দিনটি বাঁচা গেল!


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