दूरस्थ शाखा को धक्का नहीं दे सकता, शाखा को हल नहीं किया जा सकता


110

मैंने अपने रिपोज को बिटबकेट या गितुब से स्थानांतरित किया। मुझे नहीं लगता कि यह मायने रखता है, लेकिन यह केवल अलग बात है ... थोड़ी देर के लिए मेरे पास दो रीमोट सेट अप थे:

origin: bitbucket
github: github

फिर मैंने दोनों को हटा दिया और उत्पत्ति की ओर इशारा किया:

git remote remove origin
git remote remove github
git remote add origin https://github....

विकसित शाखा का परीक्षण धक्का:

git push origin develop

सब कुछ अप टू डेट, ओके, गुड।

हमेशा की तरह कुछ काम के लिए एक नई शाखा बनाएँ:

git checkout -b Feature/Name

एक फ़ाइल या दो अद्यतन करें। रिमोट पर धकेलने का प्रयास:

git push origin Feature/Name

इसके परिणामस्वरूप त्रुटि होती है:

घातक: फ़ीचर / नाम को शाखा में हल नहीं किया जा सकता है

इस समस्या के लिए ऑनलाइन खोजें, HEAD को सुनिश्चित करने के बारे में कुछ सामान ढूंढें, यह सुनिश्चित करने के बारे में अन्य ने कहा कि मुझे अपनी शाखा का नाम मामला सही मिला है (हालांकि, इस बिंदु पर शाखा अभी तक रिमोट पर मौजूद नहीं है)। निराकरण करने में असमर्थ।

इस कमांड को रन करें:

git push --all -u

यह मेरी Feature/Nameशाखा github को मिला है , लेकिन अभी भी पहले के समान व्यवहार देखें:

git push origin develop
git push origin Feature/Name

पहला काम करता है, दूसरा वही त्रुटि फेंकता है।

मैं यह पता नहीं लगा सकता कि मुझे यह त्रुटि क्यों मिल रही है। कोई विचार?


1
आप किस शाखा में थे Feature/Name? क्या आप सुनिश्चित हैं किFeature/Name मौजूद है और वह चेक आउट शाखा है? के साथ जाँच करें git branch
श्वेर्न

@ स्च्वर्न - केवल तीन शाखाएं (स्थानीय रूप से और दूरस्थ रूप से) मौजूद हैं: विकास, परीक्षण और मास्टर। एक बार जब एक शाखा को साफ किया जाता है और मैं स्थानीय रूप से उन्हें हटाने के लिए वापस विलय कर देता हूं (और यदि लागू हो तो दूरस्थ रूप से)। मुझे यकीन है कि केवल मेरे तीन ही थे - मैंने थोड़ी देर में परियोजना नहीं खोली है और पहली चीज जो मैंने की थी वह जांच थी और सुनिश्चित करें कि मेरी कोई ढीली शाखाएं नहीं थीं।
jleach

क्या इसका मतलब है कि आप स्थानीय स्तर पर git branchसत्यापित करने के लिए दौड़े हैं Feature/Name? GUI या IDE पर भरोसा न करें। साथ ही, क्या आपको मामला सही लगा?
श्वर्न

कैसे के बारे में git push origin Feature/Name:Feature/Name?
एल्पीकेय

अब मुझे अफ़सोस हो रहा है ... यकीन नहीं होता कि यह पहली जगह पर काम क्यों नहीं कर git push --all -uरहा था , लेकिन मेरे इस्तेमाल के बाद जीथब में नई शाखा है, लेकिन अभी भी स्थानीय, सही से धक्का नहीं दे सकता था? यहाँ उस के साथ क्या हुआ है ... वास्तविक शाखा का नाम है SQLMigration/ReportFixesऔर जीथब में क्या है SqlMigration/ReportFixes। तो, अब मैं कर सकता हूँ git push origin SqlMigration/ReportFixes- क्यों gtub मेरे लिए आवरण बदल देता है? आह।
jleach

जवाबों:


379

मैं इस मुद्दे को भी कर रहा था, और यह मुझे पागल कर रहा था। मेरे पास कुछ था feature/nameलेकिन git branch -aमुझे दिखाया FEATURE/name। शाखा का नाम बदलना, हटाना और इसे फिर से बनाना, कुछ भी काम नहीं किया। आखिरकार क्या तय हुआ:

अंदर जाएं .git/refs/heads

आपको एक FEATUREफ़ोल्डर दिखाई देगा । इसका नाम बदला feature


4
यह मेरे लिए सही उत्तर था। विंडोज़ पर gitbash का उपयोग कर रहा था, और फ़ीचर / कुछ-फ़ीचर और फ़ीचर / कुछ-फ़ीचर बनाया था।
डायलन मैक्क्ररी

इसे सही उत्तर के रूप में चिह्नित किया जाना चाहिए। मेरी मदद की। धन्यवाद!
गुडी डूडी

21
मैं तुम्हें इस जवाब के लिए बीयर देना है! : डी
वोज्टा

1
वाह, अच्छा कैच। मुझे पूरा समय बचाया। धन्यवाद !
पीयूष

2
@Pegues - किया। मुझे नहीं लगता कि यह जवाब मेरे पास मौजूद होने के लंबे समय बाद तक मौजूद था, लेकिन यह लोकप्रिय प्रतीत होता है, इसलिए वहाँ फिर से जाना।
jleach

30

अपने स्वयं के परीक्षण और ओपी की टिप्पणियों के आधार पर , मुझे लगता है कि कुछ बिंदु पर वे शाखा नाम के आवरण पर नासमझ थे।

सबसे पहले, मेरा मानना ​​है कि ओपी एक केस असंवेदनशील ऑपरेटिंग सिस्टम पर है जैसे ओएस एक्स या विंडोज। फिर उन्होंने कुछ ऐसा किया ...

$ git checkout -b SQLMigration/ReportFixes
Switched to a new branch 'SQLMigration/ReportFixes'

$ git push origin SqlMigration/ReportFixes
fatal: SqlMigration/ReportFixes cannot be resolved to branch.

आवरण अंतर पर ध्यान दें। यदि आप सिर्फ नाम टाइप करते हैं तो भी त्रुटि बहुत अलग है।

$ git push origin SQLMigration/ReportFixme
error: src refspec SQLMigration/ReportFixme does not match any.
error: failed to push some refs to 'git@github.com:schwern/testing123.git'

क्योंकि गिथब फाइल सिस्टम का उपयोग शाखा नामों को संग्रहीत करने के लिए करता है, यह खोलने की कोशिश करता है .git/refs/heads/SqlMigration/ReportFixes। क्योंकि फ़ाइल सिस्टम केस असंवेदनशील है, यह सफलतापूर्वक खुल .git/refs/heads/SqlMigration/ReportFixesजाता है, लेकिन भ्रमित हो जाता है जब यह शाखा के नामों को केस-संवेदी रूप से तुलना करने की कोशिश करता है और वे मेल नहीं खाते हैं।

वे किस प्रकार एक ऐसी स्थिति में आ गए, जहां स्थानीय शाखा है SQLMigration/ReportFixesऔर दूरस्थ शाखा SqlMigration/ReportFixesमुझे यकीन नहीं है। मेरा मानना ​​है कि Github ने दूरस्थ शाखा के नाम के साथ खिलवाड़ किया है। सरलतम स्पष्टीकरण किसी और का है जिसमें पुश एक्सेस ने दूरस्थ शाखा का नाम बदल दिया है। अन्यथा, कुछ बिंदु पर उन्होंने कुछ किया जो टाइपो के साथ रिमोट बनाने में कामयाब रहे। यदि वे अपने शेल इतिहास की जांच करते हैं, तो शायद उनके साथ history | grep -i sqlmigration/reportfixesएक कमांड ढूंढने में सक्षम हो सकता है जहां उन्होंने आवरण को गलत तरीके से समझा।


मैं इस समस्या में भाग गया जब मैंने ओएस एक्स पर शाखा के नाम के पात्रों के मामले को बदल दिया। उन्हें बदलने से समस्या हल हो गई।
स्टीवन सी। हॉवेल

यह तब भी हो सकता है जब आपके पास पिछली शाखा हो, AM-xxx / some_branch कहें, और फिर एक और एक AM-XXX / एक और_ब्रांच बनाएं, git विभिन्न मामलों को स्थानीय रूप से अनुमति देगा और दोनों को दूर से युग्मित करने में विफल होगा।
टाइमप्वैकर

हाँ यह गलत मिश्रित मामले में जाँच करना संभव है, लेकिन जाँच नहीं .. बस गन्दा है।
जवादबा २४'१

12

Git आपको एक अलग आवरण के साथ वर्तमान शाखा की जांच करने देगा, और यह रिमोट पर एक रेफरी खोजने में विफल रहेगा।

बस मुश्किल रास्ता मिल गया।


1
यह मेरा मुद्दा था। मैं आपको एक त्वरित > git branchऔर सत्यापित करने का सुझाव दूंगा कि आपकी शाखा के पास एक * है।
एंडी डेंजर ग्रीन

यह मुझे भी हुआ था। @AndyDangerGagne, मुझे खुशी है कि आपने यह सुझाव दिया है - मैं जिस शाखा पर था, उसके आगे कोई * नहीं था, इसलिए मैंने इसे फिर से जांचा, इस बार निचले मामले में।
Cognitiaclaeves

9

मेरे साथ भी कुछ ऐसा ही हुआ। मैंने एक शाखा बनाई जिसका नाम "करतब / नाम" था। मैंने इसका उपयोग करके धकेलने की कोशिश की:

git पुश --सेट-अपस्ट्रीम मूल करतब / नाम

मुझे आपके समान ही घातक त्रुटि मिली:

घातक: करतब / नाम को शाखा में हल नहीं किया जा सकता है

इसे हल करने के लिए मैंने एक नई शाखा बनाई क्योंकि मैंने बहुत कम फाइलें प्रभावित की थीं। फिर मैंने गलत शाखाओं को हटाने के लिए अपनी शाखाओं को सूचीबद्ध किया और इसे बिना टोपी के प्रदर्शित किया:

  • करतब / नाम

मैंने पहले कैप का इस्तेमाल किया था, लेकिन पहले बैक्टीरिया पर कभी नहीं। ऐसा लगता है कि यह पसंद नहीं है ...


मेरे पास एक ही मामला था THX: D
abdoutelb

5

यह केस-संवेदी है, बस सुनिश्चित करें कि शाखा बनाई गई है और दोनों को एक ही राजधानी में शाखा में धकेलना है।

उदाहरण:

git checkout -b "TASK-135-hello-world"

गलत करने का तरीका:

git push origin task-135-hello-world     #FATAL: task-135-hello-world cannot be resolved to branch

सही करने का तरीका:

git push origin TASK-135-hello-world

2

शायद आपका git लाने के लिए भूल गया है? दूरस्थ रेपो से डेटा प्राप्त करना आवश्यक है! दौड़ने की कोशिश करोgit fetch remote/branch


2

मेरे मामले में, मेरे पास बड़े अक्षरों के साथ शाखा फ़ोल्डर (या इसे जो भी कहा जाता है) होता था, फिर मैं अंतर आवरण (लोअरकेस) के साथ एक नया बनाता हूं लेकिन वास्तव में पूंजी के साथ शाखा का निर्माण करता है।

मैंने feature-ABC/branch1पहले की तरह एक शाखा बनाई है और इसे आगे बढ़ाया है। तब मैं एक शाखा बनाता हूं feature-abc/branch2(लोअर-केस एबीसी को नोटिस करता हूं ), और इसे git push --set-upstream origin feature-abc/branch2' रिमोट ' के जरिए हल नहीं किया जा सकता। इसलिए मैं git branchदेख रहा हूं कि यह वास्तव में मेरे लिए बनाया feature-ABC/branch2गया है feature-abc/branch1। मैं फिर से चेकआउट करता हूं git checkout feature-ABC/feature2और इसे feature-ABC/feature2हल करने के लिए अपरकेस ( ) का उपयोग करके धक्का देता हूं ।


2

मुझे उसी मुद्दे का सामना करना पड़ा जो गलत आवरण के साथ शाखा में जाने के कारण था। मुझे गलत केसिंग के feature/Nameबजाय शाखा में स्विच करने दें feature/name। ऊपर सूचीबद्ध की तुलना में एक आसान समाधान मिला:

  • 'सुविधा / नाम' के लिए अपने परिवर्तन
  • git checkout master (or develop)
  • git checkout feature/name <सही आवरण के साथ
  • git push

2

मैंने इसे GitBash के बजाय cmd का उपयोग करके विंडोज 10 में हल किया ।

यह चरित्र मामले के साथ क्या करना है और कैसे git और कमांड लाइन उन्हें संभालती है।


1

हो सकता है कि आपने एक जैसी शाखा बनाई हो, लेकिन अलग-अलग मामले के प्रति संवेदनशील, तब आपको दौड़ना होगा:

git branch -D <name-of-different-case-branch>

और फिर फिर से धक्का देने की कोशिश करें।


1

@ ले ले का थोड़ा संशोधित उत्तर:

मेरे लिए फ़ाइलों में कोई परिवर्तन आवश्यक नहीं था - मेरे पास 'फ़ीचर / ...' नाम की एक शाखा थी और ऊपर की ओर धकेलने के दौरान मैंने शीर्षक को 'फ़ीचर / ...' में बदल दिया (पहले अक्षर का मामला निचले हिस्से में बदल गया था )।


0

मेरे पास बस यह मुद्दा था और मेरी सामान्य शाखाएं शुरू pb-3.1-12345/namebranchहुईं लेकिन मैंने पहले 2 अक्षरों में आकस्मिक पूंजी लगाई PB-3.1/12345/namebranch। निचले केस पत्रों का उपयोग करने के लिए शाखा का नाम बदलने के बाद मैं शाखा बना सकता था।


0

मेरे लिए मैं शाखा का नामकरण कर रहा था

Rel4.6 / बग / कुछ-शॉर्ट वर्णन

सब मुझे क्या करना है जब का उपयोग कर रहा था

git पुश ओरिजिनल R elx.x / bug / Some-short-description

लिखना

git पुश ओरिजिनल r elx.x / bug / Some-short-description

जैसा कि मैंने रिले में छोटे अक्षर आर का उपयोग करके शाखाएं बनाने के लिए किया था।

तो, इस मुद्दे का क्या कारण है?

जब मैंने .git/refs/headsसामग्री को सूचीबद्ध किया तो मैंने पाया

drwxr-xr-x  4 eslam_khoga  staff   128B Sep 22 20:22 relx.x

लेकिन नहीं Relx.x!

और इसके अंदर bugऔर bugमेरी शाखा के नाम के अंदर ।

तो, git एक ही नाम लेकिन अलग-अलग केस लेटर्स के साथ एक डायर बनाने की कोशिश करता है

लेकिन सिस्टम संवेदनशील नहीं है।

यही कारण है कि इस मुद्दे पर!


0

अलग आवरण के साथ एक ही समस्या थी।

विकास (या मास्टर) के लिए एक चेकआउट किया, फिर नाम (गलत नाम) को परीक्षण की तरह कुछ और में बदल दिया।

  • git चेकआउट विकास
  • git शाखा -m गलत-नाम परीक्षण

फिर सही नाम पर वापस नाम बदलें

  • git शाखा -m परीक्षण सही नाम

फिर राइट-नेम ब्रांच को चेकआउट करें

  • git चेकआउट सही नाम

तब इसने दूरस्थ शाखा को आगे बढ़ाने का काम किया

  • git पुश ओरिजिन राइट-नेम

0

मेरे लिए, मुद्दा यह था कि मेरे पास git था और मेरे macOS फाइलसिस्टम को दो अलग-अलग केस सेंसिटिव में सेट किया गया था। मेरे मैक स्वरूपित किया गया था apfs / होने की स्थिति के प्रति संवेदनशील: नहीं , लेकिन मैं इतना नामकरण Xcode चित्र संपत्ति के साथ एक अजीब मुद्दे पर प्राप्त करने की कोशिश कुछ बिंदु पर मेरी Git सेटिंग्स फ़्लिप था Git config --global core.ignorecase झूठी । इसे वापस फ्लिप करने से सेटिंग्स को संरेखित किया गया और शाखा को फिर से बनाया गया और मुझे वापस ट्रैक पर लाया गया।

git config --global core.ignorecase true

साभार: https://www.hanselman.com/blog/GitIsCasesensitiveAndYourFilesystemMayNotBeWeirdFolderMergingOnWindows.aspx


0

मुझे भी यही समस्या थी लेकिन हल किया गया था। मुझे एहसास हुआ कि शाखा का नाम मामला संवेदनशील है। GitHub में मुख्य शाखा 'मास्टर' है, जबकि मेरे gitbash कमांड में यह 'मास्टर' है। मैंने मास्टर को स्थानीय रिपॉजिटरी में मास्टर का नाम दिया और यह काम किया! 😀😀


0

मैं उसी मुद्दे पर भागा और देखा कि मैंने शाखा की जाँच करते समय आवरण को मिला दिया था। मैंने इसके branchNameबजाय जांच की BranchNameऔर जब मैंने रिमोट से पुश करने की कोशिश की, तो मुझे वही त्रुटि मिली।

जोड़:

git push --set-upstream origin BranchName

सही नाम पर अपस्ट्रीम सेट करके, सही शाखा को जीथब पर अद्यतन किया गया था और मैं तब सही शाखा के नाम की जांच करने में सक्षम था

git checkout BranchName 

और यह आपके अंतिम पुश के साथ अद्यतित होना चाहिए।


-1

यदि आप स्थानीय शाखा में हैं, तो शाखा का नाम बदलकर "फ़ीचर / नाम" को "सुविधा / नाम" कर सकते हैं

git -m feature/Name

यदि आपको git pushअन्य शाखा में चेकआउट करने (पूर्व विकसित) करने और नामांकित शाखा में लौटने की समस्या है

git checkout feature/Name

और फिर से अपनी कोशिश करो git push

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