গিট - "দূষিত" ইন্টারেক্টিভ রিবেস কীভাবে ঠিক করবেন?


182

আমি আমার স্থানীয় গিট সংগ্রহস্থলটিতে কিছুটা গণ্ডগোল তৈরি করতে সক্ষম হয়েছি। আমি নিম্নলিখিত নির্দেশাবলী ব্যবহার করে একটি ভাঙ্গা প্রতিশ্রুতি সংশোধন করার চেষ্টা করছিলাম । "গিট কমিট --amend" চালানোর আগে (এবং গিট রিবেস - ইন্টারেক্টিভের পরে) আমি সিদ্ধান্ত নিয়েছিলাম যে আমার পরিবর্তনগুলি ভুল ছিল এবং তাই আমি "গিট রিসেট এইচএইডি --হার্ড" কার্যকর করি। একটি ভাল ধারণা না, আমি আপনাকে বলছি।

ইন্টারেক্টিভ রিবেস এখন "আটকে" আছে বলে মনে হচ্ছে। গিট বর্তমান শাখাটি (| আরবিএএসইএসইএম) হিসাবে দেখায়। আমার সংগ্রহস্থলের প্রতিটি কমান্ড (সিডি .., এলএস, গিট রিবেস ...) নিম্নলিখিত ত্রুটিটি দেয়:

বিড়াল: .git / rebase- মার্জ / প্রধান-নাম: এই জাতীয় কোনও ফাইল বা ডিরেক্টরি নেই

গিট রিবেস --abort কেমন দেখাচ্ছে তা এখানে:

$ git rebase --abort
cat: c:/_work/project/src/git/.git/rebase-merge/quiet: No such file or directory
cat: c:/_work/project/src/git/.git/rebase-merge/head-name: No such file or directory
cat: c:/_work/project/src/git/.git/rebase-merge/orig-head: No such file or directory
HEAD is now at 4c737fb Revert "Modified file names"
rm: cannot remove `c:/_work/project/src/git/.git/rebase-merge/done': Permission denied
rm: cannot remove directory `c:/_work/project/src/git/.git/rebase-merge': Directory
not empty
cat: .git/rebase-merge/head-name: No such file or directory

এখানে গিট রিবেসের ফলাফল - ধারাবাহিকতা:

$ git rebase --continue
cat: c:/_work/project/src/git/.git/rebase-merge/prev_head: No such file or directory
cat: c:/_work/project/src/git/.git/rebase-merge/end: No such file or directory
cat: c:/_work/project/src/git/.git/rebase-merge/msgnum: No such file or directory
cat: c:/_work/project/src/git/.git/rebase-merge/onto: No such file or directory
cat: c:/_work/project/src/git/.git/rebase-merge/quiet: No such file or directory
prev_head must be defined
cat: .git/rebase-merge/head-name: No such file or directory

কোন ধারনা? আমি আমার সুচিন্তিত পুনর্বাসনের অপারেশন শুরু করার আগে পরিস্থিতিটি আবার ফিরিয়ে আনতে চাই।

এখানে গিট লগ - অনলাইন পরিস্থিতিটি কীভাবে দেখায়:

4c737fb Revert "Modified file names"
247ac02 Modified file names
33141e6 Message modifications
10a4a04 Modified db script

এবং এই ঠিক আছে।

আমি msysgit v1.7.0.2 ব্যবহার করছি।


53
git rebase --quitআমার জন্য কাজ করেছেন
হুয়ান ক্যাসিডেও

উত্তর:


158

দেখে মনে হচ্ছে গিট .git/rebase-mergeডিরেক্টরিটি সরিয়ে দেওয়ার চেষ্টা করেছিল তবে এটি সম্পূর্ণরূপে সরাতে সক্ষম হয় নি। আপনি কি সেই ফোল্ডারটি অনুলিপি করে দেখার চেষ্টা করেছেন? .git/rebase-applyযদি উপস্থিত থাকে তবে ফোল্ডারটি অনুলিপি করুন ।


7
যে ইশারা জন্য ধন্যবাদ। আমি কেবল কম্পিউটারটি পুনরায় চালু করেই আমার সমস্যাটি সমাধান করতে সক্ষম হয়েছি। আমি নিশ্চিত না যে কী ভুল হয়েছে কারণ কোনওভাবেই .git \ রিবেস-মার্জ ফোল্ডারে প্রতিটি অ্যাক্সেসের ফলে "অ্যাক্সেস অস্বীকার" -ররর ঘটে।
মিকায়েল কোসকিনেন

19
রিবুট আমার জন্য কাজ করে নি কিন্তু git rebase --abort(থেকে stackoverflow.com/a/4757777/146044 ) করেনি হবে।
ব্যাকাস

3
শুধু Git শেল (Windows) আমার জন্য কাজ (পুনরায় চালু করার git rebase --abortকাজ করছে না হয়)
mhand

2
সতর্কতার একটি শব্দ ... আমি যখন আমার ক্ষতিগ্রস্থ রিবেস ত্রুটিটি লক্ষ্য করেছি তখন আমার ওয়ার্কিং ডিরেক্টরিতে 4 ঘন্টা মূল্যবান পরিবর্তন হয়েছিল had git rebase --abortএটি আমার অচঞ্চলিত পরিবর্তনগুলি মুছে দেওয়ার চেষ্টা করেছিল ... ত্রুটিটি যদিও অদৃশ্য হয়ে যায়
জর্জ আনন্দ ইমান

114
রিবুট করা বা git rebase --abortতবুও আমাকে ত্রুটিগুলি দিয়েছে। git rebase --quitআমার জন্য কাজ।
ফ্লাভিও রডরিগেস

192

আমি এই আটকে গেলাম। আমি প্রধান নাম ফাইলটি তৈরি করেছি, এবং তারপরে আমি অন্য ত্রুটির দিকে দৌড়ে গিয়েছিলাম যে এটি অন ফাইলটি খুঁজে পাচ্ছে না, তাই আমি সেই ফাইলটি তৈরি করেছিলাম। তারপরে আমি আরও একটি ত্রুটি পেয়েছি যা '.git / rebase-প্রয়োগ / উপরে' পড়তে পারেনি: এ জাতীয় কোনও ফাইল বা ডিরেক্টরি নেই।

তাই আমি প্রতারণার জন্য গিট ডকুমেন্টেশনের দিকে নজর রেখে অন্য একটি আদেশ পেয়েছি:

git rebase --quit

এটি আমাকে কোনও পরিবর্তন ছাড়াই আমার শাখায় ফিরে এনেছে এবং আমি আবার আমার রিবেস শুরু করতে পারলাম, নতুন হিসাবে ভাল।


51
git rebase --quitএটা ছিল!
স্টিভেন শ

5
--quitকাজ করছে. --abortরিবেস অর্ধেক পথ বাতিল হয়ে যাওয়ার কারণে হয়নি
কালোব টালিয়েন

1
আমার ঠিক একই ত্রুটি বার্তার সাথে একই ধরণের রিবেস-সম্পর্কিত ত্রুটি ছিল। চেষ্টা করেছেন: $ git rebase --abortআউটপুট: error: could not read '.git/rebase-apply/head-name': No such file or directoryঅবশেষে, এই সমাধানটি আমার সমস্যার সমাধান করে:git rebase --quit
aff

সম্মত। git rebase --quitএকেবারে আমাকে বাঁচিয়েছে বর্ণিত হিসাবে একই লক্ষণগুলি, তবে আমার এটি করার চেষ্টা করার পরে এসেছিল git pull --rebase, যা কোনও কারণে ব্যর্থ হয়েছিল। দ্রষ্টব্য আমি অটোস্ট্যাশ সক্ষম করেছিলাম (গিট সংস্করণ ২.২27.০. উইন্ডোস .১) এবং একই সাথে ভিএস2019 চলছিল (সেই রেপোতে নির্দেশিত) - সন্দেহ হয়েছে যে এর কিছু সংশ্লেষ এটি গণ্ডগোল করেছে।
এররকোড

90

একটি জম্বি vim.exe প্রক্রিয়াটির কারণে আমার একই সমস্যা ছিল had এটি টাস্ক ম্যানেজারে হত্যা করা, তারপরে git rebase --abortএটি একটি স্থির।


এটা আমার সমস্যা ছিল। আমি সিসিনটার্নাল handleকমান্ড ব্যবহার করেছি এবং দেখেছি যে কোনও প্রক্রিয়া (sh.exe) ফাইলটি লক করে রেখেছে। pskill <pid>আমার জন্য এটি স্থির ব্যবহার ।
পল অলিভার

আমার একই সমস্যা ছিল, তবে আমার কাছে সাব্লাইম টেক্সট সহ।
তোয়ভো সোওয়ান

35

আপনার উত্তরের জন্য @ লরা স্লোকামকে ধন্যবাদ

রিবাইস করার সময় আমি জিনিসগুলিতে গোলযোগ পেয়েছি এবং একটি দিয়ে পৃথক হেড পেয়েছি

 error: could not read orig-head

যা আমাকে প্রতারণা শেষ করতে বাধা দিয়েছে।

বিচ্ছিন্ন শিরোনামে আমার সঠিক পুনর্বাসনের কাঙ্ক্ষিত অবস্থা অবিকল রয়েছে বলে আমি দৌড়েছি

rebase --quit

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

আমি যে শাখায় পুনঃব্যবস্থা করতে চাইছিলাম তার সাথে এটির তুলনা করে, আমি দেখতে পাচ্ছি যে নতুন টেম্প শাখাটি ঠিক যে অবস্থায় পৌঁছাতে চাইছে is ধন্যবাদ


7

Eclipse এ একই সমস্যা ছিল। পুনরুদ্ধার করা যায়নি = >গ্রহণ থেকে গর্ভপাত বাতিল।

গিট রিবেস কার্যকর করা - গিট বাশ থেকে আমার জন্য কাজ করা।


7

উইন্ডোজে, আপনি যদি ইচ্ছুক না হন বা মেশিনটি পুনরায় চালু করতে অক্ষম হন তবে নীচে দেখুন।

প্রক্রিয়া এক্সপ্লোরার ইনস্টল করুন: https://technet.microsoft.com/en-us/sysinternals/bb896653.aspx

প্রক্রিয়া এক্সপ্লোরারে, ফাইল হ্যান্ডেল বা ডিএলএল সন্ধান করুন ...

ত্রুটিতে উল্লিখিত ফাইলের নামটি টাইপ করুন (আমার ত্রুটির জন্য এটি 'গিট-রিবেস-টুডো' ছিল তবে উপরের প্রশ্নে, 'সম্পন্ন')।

প্রক্রিয়া এক্সপ্লোরার ফাইলটিতে একটি লক ধারণ প্রক্রিয়াটি হাইলাইট করবে (আমার জন্য এটি 'গ্রেপ' ছিল)।

প্রক্রিয়াটি মেরে ফেলুন এবং আপনি গিট অ্যাকশনটিকে স্ট্যান্ডার্ড উপায়ে বাতিল করতে সক্ষম হবেন।



3

আমার ক্ষেত্রে আটটি git rebase --abortএবং git rebase --continueনিক্ষেপ করা হয়েছিল:

ত্রুটি: '.git / rebase-প্রয়োগ / প্রধান নাম' পড়তে পারেনি: এই জাতীয় কোনও ফাইল বা ডিরেক্টরি নেই

আমি ম্যানুয়ালি: .git\rebase-applyডিরেক্টরিটি মুছে ফেলে এই সমস্যাটি সমাধান করতে পেরেছি ।


2

আমি ব্যবহার করছি git version 2.19.2.windows.1

আমার জন্য যে কাজটি করেছিল তা হ'ল .git/rebase-apply/ডিরেক্টরি সরানো এবং একটি করা git reset --hard


1

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

আমি এটির বিষয়ে যত বেশি চিন্তা করি ততই আমি সম্পূর্ণ কমান্ডারকে সন্দেহ করি, যেমন উইন্ডোতে খোলা ডিরেক্টরিতে লক থাকা গিট রিবেস দিয়ে কিছু করার চেষ্টা করছিল।

বন্ধুত্বপূর্ণ পরামর্শ: আপনি যখন কিছু ঠিক করার চেষ্টা করেন তখন সর্বদা একটি সময়ে একটি পরিবর্তন করুন। ;)


1

আমি উল্লিখিত সমস্ত পদক্ষেপগুলি চেষ্টা করেছি তবে কিছুই আমার পক্ষে কার্যকর হয়নি। অবশেষে, কম্পিউটারটি পুনরায় চালু করা এই সমস্যার জন্য কাজ করেছে: ডি


1

উইন্ডোজে সাবলাইম টেক্সট 3 দিয়ে, কেবল ইন্টারেক্টিভ কমিট সংস্করণের জন্য ব্যবহৃত সাব্লাইম উইন্ডোগুলি বন্ধ করে সমস্যার সমাধান করা হয়েছে।


0

একবার আপনি সন্তুষ্টিজনকভাবে X সংখ্যার কমিট রিবিসিং সম্পন্ন করার পরে, শেষ আদেশটি অবশ্যই হবে git rebase --continue। এটি প্রক্রিয়াটি সম্পূর্ণ করে এবং রিবেস মোড থেকে বেরিয়ে আসে।


0

আমারও একই সমস্যা ছিল। আমি অন্যান্য পোস্টে প্রস্তাবিত প্রসেস এক্সপ্লোরার ব্যবহার করেছি (আমি সেই পোস্টটি সন্ধান করতে পারছি না) এবং ফাইলটিতে কোন প্রক্রিয়াটিতে একটি লক রয়েছে এবং এটি মেরে ফেললাম তা আবিষ্কার করেছি। তারপরে প্রয়োজন অনুসারে --continue বা --abort সম্পাদন করুন


0

আমার ক্ষেত্রে এই সমস্ত বিকল্পগুলির পরীক্ষা করার পরেও সমস্যাগুলির পরেও আমি চেষ্টা করেছি sudo git rebase --abortএবং এটি পুরো জিনিসটি করেছে


আপনি যদি সত্যিকারের রিবেসের মাঝখানে এটি করছেন তবে সাবধান হন careful
ফ্রিম্যান এল

এটি "দুর্নীতিগ্রস্থ" হিসাবে বিবেচিত হয়েছিল, তারপরে আপনি রিবেস দিয়ে শুরু করবেন
ড্যানি। রেঞ্জেলভ

0

রিবুট ছাড়া অন্য সব কিছুর চেষ্টা করেছিলাম, যা আমার জন্য কাজ করেছিল তা rm -fr .git/REBASE_HEAD


0

আপনি যদি রাষ্ট্রের নীচে নামেন এবং পুনর্বাসনা আর কাজ না করে,

$ git status
rebase in progress; onto (null)
You are currently rebasing.
  (all conflicts fixed: run "git rebase --continue")

তারপরে প্রথমে রান করুন,

$ git rebase -quit

এবং তারপরে রিফ্লগ থেকে পূর্বের অবস্থাটি পুনরুদ্ধার করুন,

$ git reflog
97f7c6f (HEAD, origin/master, origin/HEAD) HEAD@{0}: pull --rebase: checkout 97f7c6f292d995b2925c2ea036bb4823a856e1aa
4035795 (master) HEAD@{1}: commit (amend): Adding 2nd commit
d16be84 HEAD@{2}: commit (amend): Adding 2nd commit
8577ca8 HEAD@{3}: commit: Adding 2nd commit
3d2088d HEAD@{4}: reset: moving to head~
52eec4a HEAD@{5}: commit: Adding initial commit

ব্যবহার,

$ git checkout HEAD@{1} #or
$ git checkout master #or
$ git checkout 4035795 #or

-3

আমি গ্রিপসে গিট ব্যবহার করছি এবং আমারও একই সমস্যা ছিল।

অবশেষে আমি দেখতে পেলাম যে "রিবেস ..." মেনু এন্ট্রি অস্থায়ীভাবে একটি সাব-মেনুতে রূপান্তরিত হয়েছিল।

দল-> রিবেস -> বাতিল করুন

এটা আমার জন্য কাজ করেছে।

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