'git Branch -av' दूरस्थ शाखा दिखाती है जो अब मौजूद नहीं है


168

यह शायद एक गूंगा प्रश्न है, लेकिन मैं बिलकुल नया हूँ और एक ऐसी दूरस्थ शाखा देख रहा हूँ जो अब मौजूद नहीं है।

$ git branch -a
* master
  remotes/origin/master
  remotes/origin/production

मुझे विश्वास नहीं है कि उत्पादन शाखा दूर से मौजूद है और यह पता नहीं लगा सकती है कि यह अभी भी स्थानीय रूप से क्यों दिखाता है। मैं इस शाखा को कैसे हटा / हटा सकता हूं? इसे हटाने का प्रयास इस प्रकार है:

$ git push origin :production

error: unable to push to unqualified destination: production
The destination refspec neither matches an existing ref on the remote nor
begins with refs/, and we are unable to guess a prefix based on the source ref.
error: failed to push some refs to 'git@IP:puppet.git'

मैं कथित तौर पर दूरस्थ उत्पादन शाखा की जांच कर सकता हूं लेकिन इसे प्राप्त कर सकता हूं:

$ git checkout origin/production
Note: checking out 'origin/production'.

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 c323996... added powerdns module, no really

मुझे कोई सुराग नहीं है कि मैं क्या कर रहा हूँ बिल्ली। किसी भी सहायता की सराहना की जाएगी।


git branch -aएक के बाद उत्पादन क्या है git fetch?
एलीडेफरिया


मेरे द्वारा प्रस्तावित डुप्लिकेट में एक उत्तर है जो यहां किए गए मनोजों की तुलना में बहुत अधिक बताता है।
कैस्केबेल

जवाबों:


338

आप को करना पड़ेगा:

git remote prune origin

8
धन्यवाद कि काम किया! क्या आप विस्तार से बता सकते हैं कि पर्दे के पीछे क्या चल रहा है?
कारपेनोक्टेम

12
ये आपके स्थानीय रेपो पर दूरस्थ ट्रैकिंग शाखाएँ हैं और यदि आपको दूरस्थ रेपो पर शाखाएँ हटा दी जाती हैं तो आपको उन्हें हटा देना होगा।
मनोज् यों

2
शायद ही मैं इतनी जल्दी ऐसा सीधा सवाल और जवाब खोज पाता हूं और उस पर अमल कर पाता हूं।
jleach

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

54

इसलिए दो समस्याएं हैं। दोनों मामलों में, याद रखें कि गिट वितरित किया गया है।

प्रथम। जब आप चीजों को पसंद करते हैं

$ गिट शाखा-ए

ऑपरेशन आपके स्थानीय रेपो पर नहीं दूरस्थ कंप्यूटर पर किया जाता है। दूसरे शब्दों में, आपका स्थानीय प्रतिनिधि उन सभी शाखाओं की रिपोर्ट कर रहा है जिनके बारे में पता है। ये स्थानीय शाखाएं (जैसे 'मास्टर') या दूरस्थ शाखाएं हो सकती हैं, जो इसे रिमोट से प्राप्त हुई हों । पिछले भ्रूण के बाद से, रिमोट रेपो की 'उत्पादन' शाखा बदल गई है, लेकिन आपके स्थानीय रेपो को इसकी जानकारी नहीं है। मनोजों का उत्तर , सही है। Daud

$ git दूरस्थ prune मूल

बासी शाखाओं को हटाने के लिए।

दूरस्थ कंप्यूटर के गिट रेपो से शाखा को हटाने के लिए 'गिट पुश ओरिजिन: प्रोडक्शन' कमांड का उपयोग किया जाता है। अपने स्थानीय रेपो नहीं। इस स्थिति में, किसी और ने दूरस्थ कंप्यूटर के गिट रेपो पर शाखा को हटा दिया है, इसलिए आपको यह त्रुटि संदेश दिखाई देता है।

यहाँ एक लिंक है जो इन कमांड को सारांशित करता है।

दूसरी समस्या चेकआउट से संबंधित है।

शाखा की जाँच करते समय, आप स्थानीय शाखा से ऐसा करना चाहते हैं , न कि दूरस्थ शाखा से। यही कारण है कि आपको एक अलग हेड के बारे में त्रुटि मिलती है। Git-नोट्स रेपो रक्तमय विस्तार से समस्या का एक अच्छा व्याख्या है। मूल रूप से प्रमुख वाक्यांश है

हालाँकि, जब आप कुछ भी चेक करते हैं जो उचित, स्थानीय, शाखा का नाम नहीं है, तो HEAD अब किसी भी चीज़ का प्रतीकात्मक संदर्भ नहीं है। इसके बजाय, इसमें वास्तव में उस SHA-1 हैश (कमिट आईडी) को शामिल किया गया है जिस पर आप स्विच कर रहे हैं।

अब, स्थानीय शाखा की जाँच कैसे करें, जो दूरस्थ शाखा के समान है?

आसान, आप चेकआउट दूरस्थ शाखा के समय एक स्थानीय शाखा बनाते हैं।

$ git चेकआउट -b my_local_branch मूल / उत्पादन


20
git remote prune origin

सही है, बस आप --dry-runविकल्प का उपयोग कर सकते हैं , यह रिपोर्ट करता है कि आपके स्थानीय रेपो से कौन सी शाखाएँ निकाली जाएंगी, लेकिन वास्तव में वे आपको पसंद नहीं करते हैं

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