গিট পূর্বাবস্থায় ফিরুন স্থানীয় শাখা


375

আমি আমার কিছু পরীক্ষামূলক পরিবর্তনগুলির সাথে ভুল শাখাটি সরিয়েছি git branch -D branchName

আমি কিভাবে শাখাটি পুনরুদ্ধার করব?


7
জেনে খুশি হলাম আমি একমাত্র লম্পট-ও নই যিনি এটি করেছিলেন (এবং নিয়মিত কোনও কপি রিমোট করতে ভুলে গিয়েছিলেন)
রায়

উত্তর:


717

আপনি শাখার শেষ কমিটের SHA1 সন্ধান করতে গিট রেফ্লোগ ব্যবহার করতে পারেন । সেদিক থেকে, আপনি ব্যবহার করে একটি শাখা পুনরায় তৈরি করতে পারেন

git branch branchName <sha1>

সম্পাদনা: @ সেগুলজেএস যেমন বলেছে, branch -Dকমান্ডটি আপনাকে শ 1 বলেছে, তাই যদি আপনি এখনও টার্মিনালটি বন্ধ না করে থাকেন তবে এটি সত্যই সহজ হয়ে যায়। উদাহরণস্বরূপ, এটি মুছে ফেলা হয় এবং তারপরে তত্ক্ষণাত নামের একটি শাখা পুনরুদ্ধার করে master2:

user@MY-PC /C/MyRepo (master)
$ git branch -D master2
Deleted branch master2 (was 130d7ba).    <-- This is the SHA1 we need to restore it!

user@MY-PC /C/MyRepo (master)
$ git branch master2 130d7ba

71
গিট আপনাকে জানিয়েছে যে শাখাটি মোছার পরে SHA1 কী ছিল, তাই আপনি যদি এটি মুছে ফেলেন তবে এটি কমান্ড লাইনে কেবল কয়েকটি লাইন হতে পারে।
সিগুলজেএস

যদি এই শাখাটি সার্ভারে উপস্থিত থাকে, বিকল্পভাবে, আপনি ব্যবহার করতে পারেনgit branch branchName origin/branchName
ফ্লোরিয়ান

অতিরিক্ত হিসাবে আমি গিট চেরি-পিক <শ1> ব্যবহার করে অঙ্গীকারটি শাখায় স্থানান্তর করতে
এসেছি

54

আপনি যদি শাখার শেষ SHA1 জানেন তবে আপনি চেষ্টা করতে পারেন

git branch branchName <SHA1>

আপনি এখানেgit reflog সমাধানটিতে বর্ণিত, SHA1 ব্যবহার করে খুঁজে পেতে পারেন ।


34

আপনি যদি এখনও মুছে ফেলতে চাপ না দিয়ে থাকেন তবে আপনি সহজভাবে এটি করতে পারেন:

$ git checkout deletedBranchName

এই উত্তরটি গিট এক্সটেনশানগুলিকে "যে শাখায় আপনি চাপ দেওয়ার চেষ্টা করছেন তা এই রিমোটের জন্য একটি নতুন শাখা বলে মনে হচ্ছে about" অনেক ধন্যবাদ.
ওমর

28

যদি আপনি কেবল শাখাটি মুছে ফেলে থাকেন তবে আপনি আপনার টার্মিনালে এই জাতীয় কিছু দেখতে পাবেন:

Deleted branch branch_name(was e562d13)
  • যেখানে e562d13 হ'ল একটি অনন্য আইডি (ওরফে "SHA" বা "হ্যাশ") এর সাহায্যে আপনি মুছে ফেলা শাখাটি পুনরুদ্ধার করতে পারেন।

শাখাটি পুনরুদ্ধার করতে, ব্যবহার করুন:

git checkout -b <branch_name> <sha>

উদাহরণস্বরূপ :

git checkout -b branch_name e562d13 

4

প্রথম: .git ডিরেক্টরি সহ আপনার সম্পূর্ণ ডিরেক্টরিটি ব্যাক আপ করুন।

দ্বিতীয়: আপনি git fsck --lost-foundহারানো কমিটের আইডি পেতে ব্যবহার করতে পারেন ।

তৃতীয়: হারানো প্রতিশ্রুতিতে রিবেস বা মার্জ করুন।

চতুর্থ: গিটার সহ-ডি বা - ফোর্স ব্যবহার করার আগে সর্বদা দুবার চিন্তা করুন

এছাড়াও আপনি পারে এই ভাল আলোচনা পড়া কিভাবে ত্রুটি এই ধরনের থেকে পুনরুদ্ধার করা।

সম্পাদনা: যাইহোক, দৌড়াবেন না git gc(বা এটিকে নিজে চালানোর অনুমতি দিন - যেমন দৌড়াবেন না git fetchবা অনুরূপ কোনও কিছু নেই) বা আপনি চিরকালের জন্য আপনার প্রতিশ্রুতি হারাতে পারেন।


1
1 এবং 4 হ'ল ওভারকিল আইএমও।
jwg

হ্যাঁ, এ কারণেই আমরা গিট ব্যবহার করি, যাতে চারপাশের সমস্ত জিনিস বহন করা না যায়। আপনি প্রতিশ্রুতিবদ্ধ প্রতিটি ক্রিয়া আপনার কাছে উপলব্ধ।
mateor

4

ধন্যবাদ, এটি কাজ করেছে।

গিট শাখা নতুন_ ব্রাঞ্চ_নাম sha1

গিট চেকআউট নতুন_ ব্রাঞ্চ_নাম

// আমার পুরানো শাখায় আমার পুরানো চেক করা ফাইলগুলি দেখতে পারে


3

এই পদক্ষেপগুলি অনুসরণ করুন:

1: প্রবেশ করুন:

git reflog show 

এটি সমস্ত প্রতিশ্রুতিবদ্ধ ইতিহাস প্রদর্শন করবে, আপনাকে ফিরে পেতে চাইলে সর্বশেষ প্রতিশ্রুতি রয়েছে এমন শা -1 নির্বাচন করতে হবে

2: আপনি নির্বাচিত শা -1 আইডি দিয়ে একটি শাখার নাম তৈরি করুন যেমন: 8c87714

git branch your-branch-name 8c87714

0

এটি আমার পক্ষে কাজ করেছে:

git fsck --full --no-reflogs --unreachable --lost-found
git show d6e883ff45be514397dcb641c5a914f40b938c86
git branch helpme 15e521b0f716269718bb4e4edc81442a6c11c139
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.