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


11

আমি আমার গিট ওয়ার্কস্পেস থেকে গিথুব পর্যন্ত ধাক্কা দেওয়ার চেষ্টা করছিলাম তবে আমার যুক্ত এবং প্রতিশ্রুতিবদ্ধ পরিবর্তনগুলি আপলোড হবে বলে মনে হচ্ছে না।

তারপরে, "গিট শাখা" করে আমি এমন কিছু পেয়েছিলাম যা দেখতে দেখতে দেখতে:

git branch
* (no branch)
  master

বোকামি করে, আমি ভেবেছিলাম আমি আবার মাস্টার হয়ে উঠতে পারি

git checkout master

এবং এখন আমার পরিবর্তনগুলি চলে গেছে বলে মনে হচ্ছে। আমার মাস্টার শাখা প্রায় এক দিনের পুরানো। এবং এটিতে ফিরে যাওয়ার কোনও উপায় নেই (কোনও শাখা নেই)।

আমার পরিবর্তনগুলি কি হারিয়েছে? বা তাদের পুনরুদ্ধার করার কোনও উপায় আছে?

উত্তর:


13

যতক্ষণ আপনি একটি করেননি git gc, ততক্ষণ আপনি কিছু হারান নি। আপনাকে যা করতে হবে তা আবার এটি খুঁজে বের করতে হবে :) আপনি কী পাবেন:

git reflog show

এটি আপনাকে কী ঘটেছে তা দেখানো উচিত এবং নিখোঁজ নোডের আইডি।


2
আমি মাস্টারকে নির্দিষ্ট না করে গিট রিফ্লগ করব। এমন কমিটগুলি করা সম্ভব যেগুলি শাখায় আবদ্ধ নয় এবং এই ক্ষেত্রে সম্ভবত এটি ঘটেছে। আপনি একটি নতুন শাখায় প্রতিশ্রুতি চেকআউট করতে পারেন যাতে এটির কাছে একটি পথ থাকে।
জেফ ফেরল্যান্ড 17

আপনি ঠিক বলেছেন, সম্ভবত সেভাবে আরও ভাল। প্রশ্ন থেকে আমার ধারণাটি ছিল যে এটি প্রতিশ্রুতি দেওয়ার জন্য মাস্টার উপর ছিল। আমি আমার উত্তর আপডেট করেছি।
সিকে।

ওহ, ধন্যবাদ! আমি কোনও শাখায় একটি বিশাল সংঘবদ্ধ প্রতিশ্রুতিবদ্ধ ছিলাম, তারপরে এটিতে একত্রীকরণের জন্য মাস্টারে চলে গেলাম ... এবং আমার রেফারেন্সটি ছিল।
পাসকাল

বেশ অনেক বছর কেটে গেছে, তবে আমিও এতে লাফিয়েছি। আমি মাস্টার শাখায় ফিরে গেলাম, এবং হঠাৎ poof। আমার সমস্ত 2 দিনের কাজ (যা 8 ঘন্টা অ্যাডে) চলে গেছে। তোমাকে অনেক ধন্যবাদ!
ফলগান্টিল

5

উপরের উত্তরটি সঠিক। এটি আমিই করেছি:

$ git reflog
5b35f6d HEAD@{1}: pull github master: Fast forward
ca92d15 HEAD@{2}: checkout: moving from 759dab1b15731ce7680c26839ca470d20e709e36 to master
759dab1 HEAD@{3}: commit (merge): Merge branch 'master' of github.com:gonzojive/IODB-ui into HEAD
065e269 HEAD@{4}: commit: added fieldsets to snazzy form
f357606 HEAD@{5}: commit: preliminary support for google maps.
ca92d15 HEAD@{6}: checkout: moving from master to ca92d15d272867b63d54f96d4aa57f8ecc479cd0

$ git checkout ca92d15d272867b63d54f96d4aa57f8ecc479cd0

"ওহ না!" মুহূর্তটি এই:

checkout: moving from master to ca92d15d272867b63d54f96d4aa57f8ecc479cd0

ca92d15d272867b63d54f96d4aa57f8ecc479cd0 হল একটি বেনামে শাখা যা (কোনও শাখা নেই) হিসাবে দেখায়। এটিতে ফিরে পেতে, কেবল একটি গিট চেকআউট করুন এবং আপনার পুরাতন সিউডোব্র্যাঞ্চ পুনরুদ্ধার করা হবে।

আমি আপনার গিট সংগ্রহস্থলটিকে দুর্ঘটনাক্রমে গ্রিস করার আগে, কেবলমাত্র মানসিক শান্তির জন্য ব্যাক আপ করার পরামর্শ দিই।


কেবল শাখাটি পরীক্ষা করা আমার পক্ষে কার্যকর হয়নি। আমার পরিবর্তনগুলি আমার বৈশিষ্ট্য শাখায় সঠিকভাবে করা হয়েছিল। তবুও আমি তাদের আমার কর্মক্ষেত্রে দেখতে পেলাম না। আমি অবশ্যই অন্যরকমভাবে আমার পরিবর্তনগুলি হারিয়েছি। তবে আমি সম্পাদন করে আমার পরিবর্তনগুলি পুনরুদ্ধার করতে পারি git reset --hard <commit-id>। কমিট আইডি হ'ল প্রথম কলামে আলফা সংখ্যাসূচক কোড git reflogEffectif.com/git/recovering-lost-git-commits দেখুন ।
টর্স্টেন

2
# if you have already checked out to master, 
# you won't know the commit-ish of your "no branch":

git fsck --lost-found # (to find your <commit-ish>)
git merge <commit-ish>

# if you are still on your "no branch" commit:

git log # (the commit-ish will be on the first line)
git checkout master
git merge <commit-ish>

# or

git log | head -n 1 | cut -d ' ' -f 2 | pbcopy
git checkout master
git merge <commit-ish>

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