git rebase घातक: एकल संशोधन की आवश्यकता है


162

मेरे पास एक सार्वजनिक रिपॉजिटरी की एक शाखा है और मैं मूल रिपॉजिटरी से मौजूदा कमिट के साथ अपनी शाखा को अपडेट करने की कोशिश कर रहा हूं:

$ git fetch <remote>
remote: Counting objects: 24, done.
remote: Compressing objects: 100% (20/20), done.
remote: Total 20 (delta 12), reused 0 (delta 0)
Unpacking objects: 100% (20/20), done.
From git://github.com/path_to/repo
  9b70165..22127d0  master     -> $/master
$ git rebase <remote>
fatal: Needed a single revision
invalid upstream <remote>

<remote>मेरे दूरस्थ नाम के स्थान पर है और वास्तव में मेरे दूरस्थ नाम नहीं है। इस त्रुटि पर प्रलेखन थोड़ा ढीला लगता है।


2
मुझे एक असंबंधित कारण के लिए यह त्रुटि मिली - एक विंडोज़ विंडोज प्रॉम्प्ट से "गिट रीबेस - इनडिटेक्टिव सी 4 ई 9 सी 94 ^" का उपयोग करते हुए। इसने मुझे "मोर!" कहा, और इस बात पर ध्यान दिए बिना कि इसने कैसे उत्तर दिया, इसने कहा "घातक: एक ही संशोधन की आवश्यकता है"। लेकिन जब मैंने उसी कमांड को बैश से चलाया, तो यह ठीक काम किया।
— रिचर्ड बेयर

एक साइड नोट के रूप में, मेरे लिए "रिमोट" के साथ सूचीबद्ध अपस्ट्रीम शाखा होने के अलावा मुझे उस विशिष्ट शाखा को प्राप्त करना था जिसे मैं फिर से बनाना चाहता था। "git fetch <upstream> master"। "Git fetch <upstream>" के साथ बस <upstream> प्राप्त करना अभी भी मुझे यह त्रुटि देगा।
— मिठास

जवाबों:


132

आपको एक शाखा का नाम (या अन्य प्रतिबद्ध पहचानकर्ता) प्रदान करने की आवश्यकता है, न कि किसी दूरस्थ का नाम git rebase।

उदाहरण के लिए:

git rebase origin/master

नहीं:

git rebase origin

ध्यान दें, यद्यपि एक संदर्भ के रूप में उपयोग किए जाने पर originरेफ को हल करना चाहिए origin/HEADजहां एक प्रतिबद्ध संदर्भ की आवश्यकता होती है, ऐसा लगता है कि प्रत्येक रिपॉजिटरी को ऐसे संदर्भ का लाभ नहीं मिलता है, इसलिए यह (और आपके मामले में) काम नहीं कर सकता है। यह स्पष्ट होने के लिए भुगतान करता है।


2
उत्तरार्द्ध को वास्तव में काम करना चाहिए - originसंदर्भ के रूप में व्याख्या की जाती है origin/HEAD। मैंने देखा है कि रिपॉजिटरी को यह पता नहीं है कि क्या origin/HEADहै, हालांकि ...
— Cascabel

1
@ जेफ्रोमी: मुझे डर है कि मुझे आप पर विश्वास नहीं है, मैंने सिर्फ git rebase originएक टेस्ट रिपॉजिटरी (जहां originएक है HEAD) पर कोशिश की है और मुझे ओपी की त्रुटि मिली है। रिबेस के लिए प्रलेखन यह नहीं कहता है कि एक दूरस्थ नाम के लिए मान्य है <upstream>।
— सीबी बेली

1
@ घर: ठीक है, यह एक बग हो सकता है? git rev-parse originकाम करता है, जैसा कि git rebase originमेरे git.it क्लोन में होता है (अप-टू-डेट, फास्ट-फॉरवर्ड और इंटरेक्टिव सहित सही रिबेस केस) में।
— Cascabel

@ जेफ्रोमी: क्या आप git describeअपने HEAD?
— सीबी बेली

@Charles: आज तक, v1.7.4-rc3! मैं बहुत उत्सुक नहीं हूँ कि मैं इस एक की खोज कर
— सकूँ

28

जांचें कि आपने शाखा का नाम सही ढंग से लिखा है । मैं एक कहानी शाखा (यानी branch_name) का पुन: प्रकाशन कर रहा था और कहानी का हिस्सा भूल गया था। (यानी story/branch_name) और फिर इस त्रुटि को मुझ पर थूक दिया जो इस संदर्भ में बहुत मायने नहीं रखता था।


बिल्कुल यह। टाइप किया जाता है featureNameजब शाखा वास्तव में नामित होती हैfeatures/featureName
— pkamb

3
इसके अलावा सरल टाइपो को अधिक अच्छी तरह से देखने के लिए एक अच्छा विचार है। मैंने गलती से शाखा बनाते समय दो अक्षरों की अदला-बदली की और यह टाइपो वास्तव में कठिन था।
— ओल्गा

25

मैं इस में भाग गया और मुझे एहसास हुआ कि मैं उल्टा करने की कोशिश करने से पहले ऊपर नहीं उठा था। मुझे बस इतना ही चाहिए थाgit fetch upstream


10

मुद्दा यह है कि आपने एक शाखा को बंद कर दिया है .... जहां आप पुन: प्रवेश करने की कोशिश कर रहे हैं। आप उस शाखा को पुन: नहीं बना सकते हैं जिसमें आपकी वर्तमान शाखा शामिल नहीं है।

मुझे यह तब मिला जब मैंने पहली बार एक स्थानीय शाखा एक्स को एक धक्का दिया एक वाई को, फिर एक शाखा को धक्का देने की कोशिश की (पहले एक्स पर बनाई गई) एक वाई को धक्का दिया।

एक्स के लिए रिबासिंग द्वारा मेरे लिए हल किया गया।

मुझे दूरस्थ शाखाओं के लिए रिबासिंग में कोई समस्या नहीं है (संभवतः इसकी जांच भी नहीं की गई है), बशर्ते कि मेरी वर्तमान शाखा उस शाखा के पूर्वज से उपजी हो।


3
आप इस तरह की शाखा के साथ रिबेस कर सकते हैं --onto। सब कुछ कुछ सामान्य पूर्वजों (सामान्य रिपॉजिटरी के लिए) से उतरता है , इसलिए यह समस्या नहीं है। fooजब मैंने अभी तक शाखा को ट्रैक करने के लिए नहीं बनाया था, तो मैंने इस त्रुटि को पुनः प्राप्त करने की कोशिश से प्राप्त किया है origin/foo।
— cdunn2001

0

रिमोट के लिए origin:

$ echo "ref: refs/remotes/origin/master" > .git/refs/remotes/origin/HEAD

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.