গিটে অনাথ কমিটগুলি ব্রাউজ করুন


102

আমার গিটের সংগ্রহস্থলটি কোনওভাবেই খারাপ হয়ে গেছে - আমি আজ সকালে এমএসসিগিটটি লোড করেছি এবং বর্তমান ডিরেক্টরিটির পরে শাখার নামটি প্রদর্শন করার পরিবর্তে এটি "((রেফার: রে ...))" বলে, 'গিট স্ট্যাটাস' সমস্ত হিসাবে রিপোর্ট করে নতুন ফাইল, 'গিট লগ' এবং 'গিট রেফ্লোগ' আমাকে "মারাত্মক: খারাপ ডিফল্ট রিভিশন 'হেড'" ইত্যাদি বলে and

'গিট রিফ্লোগ - সব' বা 'গিটক - সমস্ত' করা আমাকে দেখায় যে বাকী সংগ্রহস্থলটি অক্ষত আছে, তবে দেখে মনে হচ্ছে যে আমি যে শাখায় কাজ করছিলাম তা সবেমাত্র অদৃশ্য হয়ে গেছে, যা ব্যাখ্যা করে যে কেন হেডের উপস্থিতি মনে হচ্ছে না / কোন কিছুর প্রতি ইঙ্গিত

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

সম্পাদনা: ওহে প্রিয়। আমি 'git fsck' আবিষ্কার করেছি, এবং 'git fsck --ful' রিপোর্ট "মারাত্মক: অবজেক্ট 03 Ca4 ... দূষিত"। শয়তান আমি এই সম্পর্কে কি করতে পারি?

সম্পাদনা: ওহে প্রিয় ওহ প্রিয়। আমি অন্য একটি শাখা পরীক্ষা করে দেখলাম, তারপরে 'গিট চেকআউট-বি হারানো ব্র্যাঙ্কনাম' ব্যবহার করে একই নামটি দিয়ে মূল শাখাটি পুনরায় তৈরি করার চেষ্টা করেছি এবং গিটটি "ত্রুটি: রেফারেন্স / রেট / মাথা / হারানো ব্র্যাঙ্কনাম সমাধান করতে অক্ষম: কোনও ত্রুটি নয়, মারাত্মক: ব্যর্থ হয়েছে আপডেটের জন্য রেফ লক করতে: কোনও ত্রুটি নেই "। 'কোনও ত্রুটি নয়' অবশ্যই একটি বিশেষ বাজে ত্রুটি হতে হবে। সুতরাং দেখে মনে হচ্ছে এটি এখনও ঝুলছে, তবে ব্যবহার করা যায় নি এবং হত্যা করতে অক্ষম।

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


সম্পর্কিত git checkout -b lostbranchname- আপনি যদি কেবল শাখার নাম (এর বিষয়বস্তু নয়) সম্পর্কে যত্নশীল হন তবে আপনি নিজেই (বা নাম পরিবর্তন) মুছতে পারেন .git/refs/heads/lostbranchname- এটি আশাবাদী কৌশলটি করবে।
অ্যান্টনি হ্যাচকিন্স

1
আপনি এই গিট ফোল্ডারটি যেখানে ধাক্কা দিয়েছিলেন সেখানে কোনও প্রবাহ নেই?
লক্ষ্মণপ্রসাদ

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

7
আমি বলতে দ্বিধা করব যে গিটটি আপনাকে "এই ধরণের জিনিসগুলির সাথে মোকাবিলা করেছে" বা এটি নিজেই দূষিত হয়েছে। ব্যাকআপ ব্যতীত আর কোনও কিছুই ডেটা হ্রাসের বিরুদ্ধে সম্পূর্ণ স্থিতিশীল হতে পারে না।
ক্যাসাবেল

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

উত্তর:


134

বরং এই খোলা ছেড়ে আমি মনে করি আমি আমার নিজের প্রশ্নের উত্তর দেব। ব্যবহার git reflog --allকরা হয় এতিম করে ব্রাউজ করতে একটি ভালো উপায় - এবং থেকে ইতিহাস পুনর্গঠন করতে পারে SHA1 এ হ্যাশ ব্যবহার করে।

যদিও আমার ক্ষেত্রে, ভান্ডারটি দুর্নীতিগ্রস্থ হয়েছিল তাই এটি কোনও সহায়তা করেনি; git fsckআপনাকে रिपোরিটরিতে নিজেই ত্রুটিগুলি খুঁজে পেতে এবং ঠিক করতে সহায়তা করতে পারে।


3
ধন্যবাদ। গিথুব এতিম টানা অনুরোধ টানতে চেষ্টা করার সময় আমি এই তথ্যটি খুঁজে পেয়েছি। আমার সমস্যার সমাধান।
সিস্টেমপারাডক্স

6
যদি কেউ গিটকে সমস্ত কিছু পেতে চায়: [alias] orphank = !gitk --all --date-order ``git reflog | cut -c1-7``&(সম্পাদনা করুন: সেই ডাবল ব্যাকটিকগুলি কল্পনা করুন যেখানে একক - পালানো এখানে কাজ করবে বলে মনে হয় না)
এমবিএক্স

1
অসাধারণ টিপ @ এমএমএক্স! গ্রাফিকভাবে অনাথের মধ্যকার লিঙ্কগুলি দেখতে সক্ষম হতে খুব দরকারী!
বেন হাইমার

@ বেনহায়ার্স শীতল হবেন, যদি আমরা "রিবেস / স্কোয়াশ" -র মতো সম্পর্কের জন্য বিন্দুযুক্ত লাইন পেতে পারি। আমি এখনও সেই উপায়টি খুঁজে পাইনি।
এমবিএক্স

আমি উপরের উত্তরটি যখন লিখি তখন আমি রিফ্লগ সম্পর্কে জানতাম না। এটি যেমন একটি দরকারী সরঞ্জাম!
জামে হিকস

17

গিট 2.9.x / 2.10 (Q3 2016) এর সাথে, আপনাকে git reflog --allআর ব্যবহার করতে হবে না , git reflogযথেষ্ট হবে।

SZEDER Gábor ( ) দ্বারা 71abeb7 (03 জুন 2016) কমিট করুন দেখুন । (দ্বারা একীভূত junio সি Hamano - - মধ্যে কমিট 7949837 , 06 জুলাই 2016)szeder
gitster

reflog: reflogঅতীত রুট কমিট হাঁটা চালিয়ে যান

যদি কোনও সংগ্রহস্থলে একাধিক রুট কমিট থাকে তবে তার হেড রিফ্লোগলে একাধিক "ক্রিয়েশন ইভেন্টস" থাকতে পারে, অর্থাত "এনট্রি" থেকে নাল শ 1 এর এন্ট্রি থাকতে পারে।
রিফ্লগটিতে এখনও পুরানো এন্ট্রি থাকা সত্ত্বেও এই জাতীয় রিফ্লগ তালিকাভুক্ত করা প্রথম এ জাতীয় প্রবেশের সময় অকাল আগেই থামবে।
এটি ব্যবহারকারীদের এই ভেবে ভয় পেতে পারে যে তাদের রিফ্লোগ ' git checkout --orphan' এর পরে কেটে গেছে ।

পূর্ববর্তী রিফ্লগ এন্ট্রির "নতুন" মানের উপর ভিত্তি করে এই জাতীয় ইভেন্ট ইভেন্টগুলির অতীতে রিফ্লগটি হাঁটা চালিয়ে যান।


4

গিটের একটি ভাল বৈশিষ্ট্য হ'ল এটি দুর্নীতি সনাক্ত করে। তবে এটি দুর্নীতি থেকে রক্ষা করতে ত্রুটি সংশোধন অন্তর্ভুক্ত করে না।

আমি আশা করি আপনি এই সংগ্রহস্থলের সামগ্রীগুলি অন্য মেশিনে ঠেলে দিয়েছেন বা দূষিত অংশগুলি পুনরুদ্ধার করতে আপনার ব্যাকআপ রয়েছে।

উইন্ডোতে গিট নিয়ে আমার কোনও অভিজ্ঞতা নেই তবে লিনাক্স বা ওএস এক্স-তে গিটের সাথে এই ধরণের আচরণ আমি কখনই দেখিনি


2

আমি সাধারণত git reflogআউটপুটটি বিভ্রান্তিকর বলে মনে করি। কমিট গ্রাফটি বুঝতে আমার পক্ষে আরও সহজ git log --graph --reflog:

$ git alias graph "log --graph --all --format='%h %s%n        (%an, %ar)%d' --abbrev-commit
$ git graph --reflog

* f06abeb Add feature
|         (Sue Dakota, 4 days ago) (HEAD -> master)
* f126291 Fix the build
|         (Oski M. Wizard, 4 days ago) (origin/master, master)
* 3c4fb9c Break the build
|         (Alyssa P. Hacker, 4 weeks ago)
| * e3124bf fixup! More work for feature
| |         (Sue Dakota, 4 days ago)
| | * 6a7a52e Lost commit
| |/          (Sue Dakota, 4 days ago)
| * 69d9438 More work for feature
| |         (Sue Dakota, 2 weeks ago)
| * 8f69aba Initial work for feature
|/          (Sue Dakota, 4 weeks ago)
* d824fa9 Fix warnings from the linter
|         (Theo Ristudent, 4 weeks ago)
* 9f782b8 Fix tests flakes
|         (Tess Driven, 4 weeks ago)

এবং এটি স্পষ্ট যে e3124bfএবং 6a7a52eঅনর্থক অনাথ এবং তাদের পূর্বপুরুষের কমান্ডের প্রসঙ্গ রয়েছে।


আমার এখন হারিয়ে যাওয়া কয়েক ঘন্টা কাজ বাঁচিয়েছে! দুর্ঘটনাক্রমে একটি স্থানীয় শাখা মুছে ফেলা হয়েছে যা এটির উপর চাপ কমিয়ে git reflog --allদিয়েছিল, তাদের দেখায় না, তাদের সাথে git log --graph --reflogতারা খুব দৃশ্যমান ছিল ...
অ্যাডাম।
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.