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


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.