2015-06-19 7 views
12

पर स्विच नहीं किया जा सकता है मेरी टीम के किसी और ने एक नई गिट शाखा बनाई है, जो हमने सामान्य रिमोट के साथ काम किया है और उसे धक्का दिया है। जब मैं इस शाखा की जाँच करने की कोशिश, मैं इस मिल:गिट: घातक: शाखा को गैर-प्रतिबद्ध '12382'

% git checkout 12382 
fatal: Cannot switch branch to a non-commit '12382' 

मैं मुसीबत इस रिपोजिटरी से अन्य शाखाओं बाहर की जाँच नहीं था; इस के ठीक बाद किसी और को जांचने की कोशिश की (एक जिसमें मेरे पास स्थानीय प्रति नहीं थी), और यह ठीक काम करता था।

मैंने अपनी गो पाइपलाइन पर इस शाखा के साथ एक सर्वर बनाने की कोशिश की, यह ठीक काम किया - जिसका मतलब है कि सर्वर उस शाखा की जांच में सफल रहा था।

% git remote show origin 
* remote origin 
    Fetch URL: [email protected]:mycompany/myrepository.git 
    Push URL: [email protected]:mycompany/myrepository.git 
    HEAD branch: stage 
    Remote branches: 
    10112      tracked 
    10198      tracked 
    10678      tracked 
... 
    12382      tracked <<<--- 
... 
    Local branches configured for 'git pull': 
... 
    Local refs configured for 'git push': 
... 

किसी को भी सुझाव है कि कर सकते हैं कि यह कैसे तय करने के लिए:

इस चीजों की स्थिति की जांच करने की कोशिश की? क्या गलत हुआ?

उत्तर

14

गिट उलझन में है, क्योंकि 12382 एक प्रतिबद्ध हैश की तरह दिखता है। शाखा चेकआउट करने के लिए पूरी तरह से योग्य नाम का उपयोग करें:

git checkout refs/heads/12382 -- 

या, अगर यह एक दूरस्थ शाखा है:

git checkout refs/remotes/origin/12382 -- 
+0

धन्यवाद नहीं है करने के लिए चेकआउट करने के लिए कोशिश कर रहे हैं, लेकिन हमारे सभी शाखाओं 5 अंकों की संख्या है कि हैश की तरह लग रहे हैं, और यह हमेशा ठीक काम करता है। बस आपके सुझाए गए आदेश की कोशिश की, "त्रुटि: pathspec 'refs/head/12382' गिट को ज्ञात किसी भी फाइल से मेल नहीं खाती।" – zaphodb

+0

'गिट चेकआउट रेफ/हेड/12382 -' आज़माएं।साथ ही, यह मानते हुए कि आपके पास अभी तक कोई स्थानीय शाखा नहीं है, आपको 'रेफर्स/रिमोट्स/मूल/12382' (शायद बस' मूल/12382 'काम भी करना चाहिए) – knittl

+0

प्रतीक्षा करें, रिमोट कमांड काम करता है: git checkout refs/रिमोट/मूल/12382 – zaphodb

9

@knittl:

: धन्यवाद कि काम किया है, तो निम्न अतिरिक्त कदम करना पड़ा
% git checkout refs/remotes/origin/12382 
Note: checking out 'refs/remotes/origin/12382'. 

You are in 'detached HEAD' state. You can look around, make experimental 
changes and commit them, and you can discard any commits you make in this 
state without impacting any branches by performing another checkout. 

If you want to create a new branch to retain commits you create, you may 
do so (now or later) by using -b with the checkout command again. Example: 

    git checkout -b new_branch_name 

HEAD is now at 2d834e4... 

% git branch | grep 12382 
* (detached from origin/12382) 

% git checkout -b 12382 
Switched to a new branch '12382' 

% git status 
On branch 12382 
nothing to commit, working directory clean 

% git push --set-upstream origin 12382 
Branch 12382 set up to track remote branch 12382 from origin. 
Everything up-to-date 
+7

आप एक ही चरण में 'गिट चेकआउट -बी 12382 --ट्रैक रेफ/रिमोट/मूल/12382' कर सकते थे;) – knittl

0

प्रश्न एक बढ़त मामला है और इसका पहले ही उत्तर दिया जा चुका है।

मैं एक अधिक सामान्य स्तर पर त्रुटि जवाब देंगे:

  • प्रतिबद्ध:


    अपने स्रोत पेड़ में कुछ करने के लिए/चेकआउट स्विच करने के लिए यह प्रकार का होना चाहिए सक्षम होने के लिए: 90392ae`

  • टैग git checkout V2.0.3
  • शाखा (दूरस्थ शाखाओं भी) +०१२३०३५५६८५०: git checkout: 90392aeda17d730d472493bc5a36237407c80979 या शायद सिर्फ पहली 7 अंक `` Git चेकआउट कर
  • HEAD git checkout HEAD^1
  • हैश, लघु हैश।

तो यदि आप किसी ऐसी चीज़ पर स्विच कर रहे हैं जो उनमें से कोई नहीं है, जैसे कि आपने अपनी शाखा का नाम गलत टाइप किया है, तो गिट आपको यह त्रुटि देगा।

एक गैर प्रतिबद्ध करने के लिए शाखा स्विच कर सकता हूँ नहीं लगता कि इसका मतलब है आप कुछ है कि उत्तर के लिए tree-ish

संबंधित मुद्दे