আমি প্রিন্সিপালের অফিসে ছাগলের মতো অনুভব করছি যে কুকুরটি ঠিক হওয়ার আগের রাতে আমার বাড়ির কাজটি খেয়েছিল, তবে আমি মুখে ক্রেজি ডেটা হ্রাসের বাগটি দেখছি এবং কীভাবে ঘটেছিল তা আমি বুঝতে পারি না। আমি জানতে চাই যে গিটটি কীভাবে আমার সংগ্রহস্থলটি পুরোটা খেতে পারে! আমি বেশ কয়েকবার রিংয়ের মাধ্যমে গিট দিয়েছি এবং এটি কখনই জ্বলজ্বল করে না। আমি এটি 20 গিগ সাবভার্সন রেপোকে 27 গিট রেপোগুলিতে বিভক্ত করার জন্য ব্যবহার করেছি এবং এই জগাখিচুড়ি কাটাতে তাদের ফুটিকে ফিল্টার-ব্রাঞ্চ করে দিয়েছি এবং আমার পক্ষে এটি কোনও বাইট হারিয়ে যায় না। রিফ্লোগ সবসময় সেখানে ফিরে আসে। এবার কার্পেট চলে গেল!
আমার দৃষ্টিকোণ থেকে, আমি যা করেছি তা চালানো হয়েছে git pull
এবং এটি আমার সম্পূর্ণ স্থানীয় সংগ্রহস্থলকে ডেকে আনে। এর অর্থ এই নয় যে এটি "চেক আউট করা সংস্করণটি গণ্ডগোল করেছে" বা "আমি যে শাখায় ছিলাম" বা এর মতো কিছু। মানে পুরো জিনিস শেষ হয়ে গেছে ।
এই ঘটনায় আমার টার্মিনালের স্ক্রিনশট এখানে দেওয়া হয়েছে:
আমাকে যে মাধ্যমে আপনি চলুন। আমার কমান্ড প্রম্পটে বর্তমান গিট রেপো সম্পর্কিত তথ্য অন্তর্ভুক্ত করা হয়েছে (প্রিজ্তোর ভিসিএস_ইনফো বাস্তবায়ন ব্যবহার করে) যাতে আপনি দেখতে পারবেন যে গিট রেপো কখন অদৃশ্য হয়ে গেছে। প্রথম কমান্ডটি যথেষ্ট স্বাভাবিক:
» caleb » jaguar » ~/p/w/incil.info » ◼ zend ★ »
❯❯❯ git co master
Switched to branch 'master'
Your branch is up-to-date with 'origin/master'.
সেখানে আপনি দেখতে পাবেন যে আমি 'জেন্ড' শাখায় ছিলাম এবং মাস্টার পরীক্ষা করে দেখলাম। এ পর্যন্ত সব ঠিকই. আপনি আমার পরবর্তী কমান্ডের আগে প্রম্পটে দেখতে পাবেন যে এটি সফলভাবে শাখা পরিবর্তন করেছে:
» caleb » jaguar » ~/p/w/incil.info » ◼ master ★ »
❯❯❯ git pull
remote: Counting objects: 37, done.
remote: Compressing objects: 100% (37/37), done.
remote: Total 37 (delta 25), reused 0 (delta 0)
Unpacking objects: 100% (37/37), done.
From gitlab.alerque.com:ipk/incil.info
+ 7412a21...eca4d26 master -> origin/master (forced update)
f03fa5d..c8ea00b devel -> origin/devel
+ 2af282c...009b8ec verse-spinner -> origin/verse-spinner (forced update)
First, rewinding head to replay your work on top of it...
>>> elapsed time 11s
এবং ঠিক যেমন চলে গেছে। 10 সেকেন্ডের বেশি সময় অতিবাহিত হলে পরবর্তী প্রম্পটের আগে বিলম্বিত সময় চিহ্নিতকারী আউটপুটগুলি। গিট নোটিশের বাইরে কোনও আউটপুট দেয়নি যে এটি রিপ্লেতে রিওয়াইন্ড হয়েছে। এটি শেষ হয়েছে এমন কোনও ইঙ্গিত নেই।
পরবর্তী প্রম্পটে আমরা কোন শাখায় আছি বা গিটের অবস্থা রয়েছে সে সম্পর্কে কোনও তথ্য অন্তর্ভুক্ত নেই।
এটি ব্যর্থ হয়েছে তা লক্ষ্য করে আমি অজ্ঞতাবশত অন্য গিট কমান্ডটি চালানোর চেষ্টা করেছি কেবল তখনই জানানো হবে যে আমি গিট রেপোতে ছিলাম না। দ্রষ্টব্য PWD পরিবর্তন হয়নি:
» caleb » jaguar » ~/p/w/incil.info »
❯❯❯ git fetch --all
fatal: Not a git repository (or any parent up to mount point /home)
Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).
এর পরে চারপাশে এক নজরে দেখা গেল যে আমি সম্পূর্ণ ফাঁকা ডিরেক্টরিতে ছিলাম। কিছুই নেই। কোনও '.git' ডিরেক্টরি নেই, কিছুই নয়। খালি।
আমার স্থানীয় গিটটি ২.০.২ সংস্করণে রয়েছে। আমার গিট কনফিগারেশন থেকে এখানে কয়েকটি দম্পতি রয়েছে যা ঘটেছে তা তৈরি করার ক্ষেত্রে প্রাসঙ্গিক হতে পারে:
[branch]
autosetuprebase = always
rebase = preserve
[pull]
rebase = true
[rebase]
autosquash = true
autostash = true
[alias]
co = checkout
উদাহরণস্বরূপ আমি git pull
মার্জ করার পরিবর্তে সর্বদা একটি রিবেস করতে সেট করেছি , যাতে উপরের আউটপুটটির অংশটি স্বাভাবিক থাকে।
আমি তথ্য পুনরুদ্ধার করতে পারেন। আমি মনে করি না যে কিছু গুরুত্বহীন স্ট্যাশ ছাড়া অন্য কোনও গিট অবজেক্ট ছিল যা অন্য ভাণ্ডারে চাপানো হয়নি, তবে আমি কী জানতে চাই তা জানতে চাই ।
আমি এর জন্য যাচাই করেছি:
- Dmesg বা সিস্টেমযুক্ত জার্নালে বার্তা। দূরবর্তী থেকে প্রাসঙ্গিক কিছুই।
- ড্রাইভ বা ফাইল সিস্টেমের ব্যর্থতার কোনও ইঙ্গিত নেই (LVM + LUKS + EXT4 সব দেখতে সাধারণ দেখায়)। হারিয়ে যাওয়া + তেমন কিছুই পাওয়া যায় নি।
- আমি আর কিছু চালাইনি। ইতিহাসে এমন কিছুই নেই যা আমি উপরে দেখছি না এবং এই সময়টিতে অন্য কোনও টার্মিনাল ব্যবহার করা হয়নি।
rm
আশেপাশে এমন কোনও কমান্ড নেই যেগুলি ভুল সিডাব্লুডি ইত্যাদিতে কার্যকর করা হতে পারে etc. - অন্য ডিরেক্টরিতে অন্য গিট রেপোতে কব্জি করা কোনও আপাত অস্বাভাবিকতা প্রকাশ করে না
git pull
।
আমি এখানে আর কি খুঁজছি হবে?
.git
অস্তিত্ব নেই। কিছুই হয় না g গিট রুট ডিরেক্টরিতে যা ব্যবহৃত হত তার কিছুই নেই।