'গিট রিসেট' কীভাবে পূর্বাবস্থা করবেন?


1310

পূর্বাবস্থায় ফেলার সহজ উপায় কী What's

git reset HEAD~

কমান্ড? বর্তমানে, আমি কেবলমাত্র একমাত্র উপায়টি দূরবর্তী রেপো থেকে "গিট ক্লোন http: // ..." করছে।


2
যদি কেউ কীভাবে হার্ড রিসেটটি পূর্বাবস্থায় ফেরাতে চাইছেন, গিট রিসেটটি পূর্বাবস্থায় চেক করুন - শুল্ক ~ 1 । সমাধানগুলি খুব একই রকম।


2
এটি সম্পর্কিত প্রশ্নের সদৃশ নয় --hard! দুর্ঘটনাক্রমে এই কমান্ডটি চালনার ঝুঁকি অনেক বেশি। উদাহরণস্বরূপ, আপনি একটি একক ফাইলের সাথে আনস্টেজ করতে চান git reset foo-file। আপনি কেবল ফাইলনামের প্রথম অংশটি লিখুন, স্বয়ংক্রিয়ায়িতকরণের জন্য ট্যাবটি হিট করুন, এটি আসলে একটি শাখার নামকে সম্পূর্ণ করে, আপনি এটি লক্ষ্য করেন না এবং git reset foo-branchপরিবর্তে কমান্ডটি চালান । ভয়েলা
ইউশিন ওয়াশিয়ো

উত্তর:


2385

সংক্ষিপ্ত উত্তর:

git reset 'HEAD@{1}'

দীর্ঘ উত্তর:

গিট সমস্ত রেফার আপডেটের লগ রাখে (যেমন, চেকআউট, রিসেট, কমিট, মার্জ) merge আপনি এটি টাইপ করে দেখতে পারেন:

git reflog

এই তালিকার কোথাও হ'ল প্রতিশ্রুতি যা আপনি হারিয়েছেন। ধরা যাক আপনি কেবল টাইপ করেছেন git reset HEAD~এবং এটি পূর্বাবস্থায় ফিরিয়ে আনতে চান। আমার রিফ্লোগটি এরকম দেখাচ্ছে:

$ git reflog
3f6db14 HEAD@{0}: HEAD~: updating HEAD
d27924e HEAD@{1}: checkout: moving from d27924e0fe16776f0d0f1ee2933a0334a4787b4c
[...]

প্রথম লাইনটি বলে যে HEAD0 পজিশন আগে (অন্য কথায়, বর্তমান অবস্থান) 3f6db14; এটিতে পুনরায় সেট করে প্রাপ্ত হয়েছিল HEAD~। দ্বিতীয় লাইনটি বলে যে HEAD1 পজিশন আগে (অন্য কথায়, রিসেটের আগে রাজ্য) d27924e। এটি একটি নির্দিষ্ট প্রতিশ্রুতি পরীক্ষা করেই প্রাপ্ত হয়েছিল (যদিও এটি এখন গুরুত্বপূর্ণ নয়)। সুতরাং, রিসেটটি পূর্বাবস্থায় ফেরাতে git reset HEAD@{1}(বা git reset d27924e) চালান ।

অন্যদিকে, আপনি সেই পরে হেড আপডেট করার পরে কিছু অন্যান্য কমান্ড চালিয়েছেন, আপনি যে প্রতিশ্রুতিটি চান সেটি তালিকার শীর্ষে থাকবে না এবং আপনাকে এর মাধ্যমে অনুসন্ধান করতে হবে reflog

একটি চূড়ান্ত দ্রষ্টব্য: reflogআপনি যে নির্দিষ্ট শাখাটি পুনরায় সেট করতে চান সেটি সন্ধানের জন্য মাস্টার বলার চেয়ে আরও সহজ হতে পারে HEAD:

$ git reflog show master
c24138b master@{0}: merge origin/master: Fast-forward
90a2bf9 master@{1}: merge origin/master: Fast-forward
[...]

এই কম শব্দ এটা সাধারণ চেয়ে থাকা উচিত HEAD reflog


24
reflogএই উদ্দেশ্যে আরও একটি চাক্ষুষ এবং সুন্দর বিকল্প হিসাবে , আমি ব্যবহার করতে চাই git log --graph --decorate --oneline $(git rev-list -g --all)। এটি নামবিহীন শাখাগুলির
ঝাঁকুনিসহ সমস্ত কমিটের

1
বলি যে এটিতে বিদ্যমান ফাইলগুলির সাথে আমার একটি ডিরেক্টরি আছে। এই ডিরেক্টরিতে আমি চালাব git init, এবং তার ঠিক পরে git reset --hard। কোনও রিফ্লগ নেই, এমনকি কোনও লগও দিয়ে শুরু করা হবে। এই ফাইলগুলি এখন কি বেশ টস্ট?
অ্যালানএসই

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

2
git reset HEAD~12উফ ... git reset HEAD@{12}নুও .. 'গিট রিফ্লোগ' উদ্ধারে! ওহ এটি ঠিকgit reset HEAD@{1}
ডেনিস

চমৎকার git-scm.com/blog/2011/07/11/reset.html গিট-রিসেট নিবন্ধটি পড়ার পরে , আমি কিছুটা কম রহস্যজনক।
অ্যান্ড্রি দ্রোজডিয়ুক

192

পুরানো প্রশ্ন এবং পোস্ট করা উত্তরগুলি দুর্দান্ত কাজ করে। আমি যদিও অন্য একটি বিকল্প সঙ্গে চিম মধ্যে করব।

git reset ORIG_HEAD

ORIG_HEADHEADপূর্বে উল্লেখ করা প্রতিশ্রুতি রেফারেন্স।


1
এটি দুর্দান্ত বলে মনে হচ্ছে - আপনি কি বিশদভাবে বলতে পারবেন? এখানে "ওআরআইজি" "মূল" বা "উত্স" এর জন্য সংক্ষিপ্ত? … অর্থাত্, বানরের সাথে শুরু করার আগে যেখানে এটি শিরোনাম ছিল সেখানে এটি পুনরায় সেট হয়ে যায়? বা হেডের উত্স কোথায়? আপনি যদি এর আগে বেশ কয়েকবার মাথা সরিয়ে নিয়েছেন তবে কি হবে git reset ORIG_HEAD? ধন্যবাদ।
বেনজাহান

ওআরআইজি মূলটির অর্থ দাঁড়ায়, রিসেটের আগে ওআরআইজি_ইএইডি এর অর্থ আসল হেড
স্যাম গ্যালাগার

"মার্জ করা এবং পুনরায় সেট করার মতো কিছু ক্রিয়াকলাপ নতুন মানের সাথে সামঞ্জস্য করার ঠিক আগে ORIG_HEAD এ হেডের পূর্ববর্তী সংস্করণটি রেকর্ড করে You আপনি পূর্ববর্তী অবস্থায় ফিরে আসতে বা তুলনা করতে বা তুলনা করার জন্য ORIG_HEAD ব্যবহার করতে পারেন।" বইয়ের অংশ: "সংস্করণ নিয়ন্ত্রণ উইথ গিট"
আমিররেজা

56

আমার পরিস্থিতি কিছুটা আলাদা ছিল, আমি git reset HEAD~তিনবার করেছিলাম ।

এটিকে পূর্বাবস্থায় ফেলার জন্য আমাকে করতে হয়েছিল

git reset HEAD@{3}

সুতরাং আপনি করতে সক্ষম হওয়া উচিত

git reset HEAD@{N}

তবে আপনি যদি ব্যবহার করে গিট রিসেট করেন

git reset HEAD~3

আপনি করতে হবে

git reset HEAD@{1}

যেমন {N As রেফ্লগের ক্রিয়াকলাপের প্রতিনিধিত্ব করে। হিসাবে মার্ক মন্তব্যগুলিতে উল্লেখ করেছেন।


2
গৃহীত বিকল্পটি NI এগিয়ে যাওয়ার উদাহরণ দেয় না যা এমন এক ঘন্টা আগে হয়েছিল যেখানে আমি ১ টিরও বেশি ফরোয়ার্ড করতে চেয়েছিলাম। এটি এখানে যুক্ত করতে চেয়েছিলেন। গিট রিসেটের সাথে পূর্বাবস্থা
পুনর্নির্মাণের সন্ধানকারী

3
কিন্তু সে দ্রুত দেখি কেউ সম্পন্ন Git রিসেট মস্তক ~ 3 আছে তা কিভাবে পূর্বাবস্থা, Git রিসেট মাথা থেকে @ {3} reflog Git রিসেট মাথায় যাচ্ছে ছাড়া প্রয়োজন বোধ করা হয় ~ 3 ইত্যাদি একটি সাধারণ অবস্থা
zainengineer

1
আমি মনে করি যে কেউ {1} / {2 seeing দেখছেন বুঝতে পারে যে সংখ্যাটি কোনও সংশোধন নম্বর হতে পারে, যা reflogকমান্ড আপনাকে সরবরাহ করে। সম্মত হয়েছেন যে সংখ্যাগুলি সম্পর্কে আপনার বক্তব্য উভয়ই দিক for 3 / @ {3 for এর জন্য একই তবে তবে নতুন উত্তর হওয়ার দরকার নেই।
ক্লিন্ট

30

1. git reflogসমস্ত রেফারেন্স আপডেট পেতে ব্যবহার করুন ।

2।git reset <id_of_commit_to_which_you_want_restore>

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