जवाबों:
मुझे इसके बारे में समझ नहीं है, लेकिन जैसा कि इस धागे में सुझाया गया है , जब मैंने इसका सामना किया तो मैंने बस किया
$ mv .git/refs/remotes/origin/HEAD /tmp
(इसे बस के मामले में चारों ओर रखते हुए) और फिर
$ git gc
शिकायत किए बिना काम किया; मैं किसी भी समस्या में नहीं चला।
git prune
मेरे लिए काम किया, Git में जमा हुए डेटा को हटाने का एक तरीका है, लेकिन उपयोगी कुछ भी संदर्भित नहीं किया जा रहा है।
$ mv .git/refs/remotes/origin/HEAD /tmp
$ git gc
git prune
git gc
मेरे लिए काम करने की तुलना में
जिस समस्या से मैं भाग गया था (जो कि वही समस्या है जो @Stavarengo ने इस टिप्पणी में उल्लेख किया है ) यह है कि डिफ़ॉल्ट दूरस्थ शाखा ( develop
मेरे मामले में) को हटा दिया गया था, लेकिन अभी भी इसमें संदर्भित था.git/refs/remotes/origin/HEAD
।
.git/refs/remotes/origin/HEAD
मेरे संपादक में खुलने से यह पता चला:
ref: refs/remotes/origin/develop
मैंने इसे अपनी नई डिफ़ॉल्ट शाखा में इंगित करने के लिए सावधानीपूर्वक संपादित किया और सब कुछ ठीक था:
ref: refs/remotes/origin/master
यह क्लू मुझे परेशान कर रहा था कि रनिंग git prune
ने इस त्रुटि को दिखाया:
> git prune
warning: symbolic ref is dangling: refs/remotes/origin/HEAD
ट्रेंटन का जवाब देखने के बाद, मैंने अपनी ओर देखा .git/refs/remotes/origin/HEAD
तरफ देखा और देखा कि यह एक पुरानी शाखा की ओर भी इशारा कर रहा है जो अब हटा दी गई है।
लेकिन फ़ाइल को स्वयं संपादित करने के बजाय, मैंने रयान के समाधान की कोशिश की:
git remote set-head origin --auto
यह स्वचालित रूप से नई शाखा में फ़ाइल सेट करता है, और git gc
उसके बाद ठीक काम करता है।
git remote set-head $REMOTE --auto
मेरे मामले में, $ रिमोट दूरस्थ उपनाम है, न कि डिफ़ॉल्ट "मूल", क्योंकि मेरे पास कई रिमोट सेटअप हैं।
मैंने सोचा था कि समाधान निम्नलिखित था क्योंकि यह काम करने के लिए लग रहा था, लेकिन यह वास्तव में समस्या को हल नहीं करता है।
git remote set-head origin --auto
git prune
(जैसा कि पहले कमांड आउटपुट में सुझाया गया था), इसलिए मैं यह बताने में सक्षम नहीं हूं कि मुझे क्या मदद मिली - पहला, दूसरा, या दोनों।
git remote set-head origin --auto
तय मेरे रेफरी / remotes / मूल / HEAD फ़ाइल मेरे बिना उपयोग करने के लिएgit prune
error: Multiple remote HEAD branches. Please choose one explicitly
और git remote set-head origin mybranch
दूर जाने के लिए त्रुटि प्राप्त करने के लिए (जबकि 'mybranch' शाखा को चेकआउट किया गया था) का उपयोग करना पड़ा ।
ऐसा लगता है कि आपका प्रतीकात्मक-रेफ टूट सकता है ... इसे अपनी डिफ़ॉल्ट शाखा के साथ इस तरह बदलने का प्रयास करें: उदाहरण के लिए, मेरी शाखा शाखा मास्टर है
$ git symbolic-ref refs/remotes/origin/HEAD refs/remotes/origin/master
$ git fetch --prune
$ git gc
इसे ठीक करना चाहिए।
मेरे लिए इसका कारण विंडोज में एक संपीड़ित फ़ोल्डर में काम करना था। जब फ़ोल्डर को असम्पीडित किया गया था, तो उसने पैक फ़ाइलों को दूषित कर दिया, अन्य विषम मुद्दों को कैस्केडिंग किया, जैसे कि कोई भी समीपवर्ती शाखाओं को प्रून करने में सक्षम नहीं है।
एकमात्र सुधार था कार्यशील निर्देशिका को मिटा देना और रेपो रिमोट (एस) को फिर से क्लोन करना। सौभाग्य से, मैं अभी भी कुछ भी नहीं खो गया था सुनिश्चित करने के लिए अद्यतन धक्का और खींच सकता है। अभी सब ठीक है।
master
को एक से दूसरे में बदल दियाdevelop
। दिन इससे पहले कि मैं से वापस इसे बदलनेdevelop
के लिएmaster
और मैं पुराने डिफ़ॉल्ट शाखा नष्ट कर दियाdevelop
, लेकिन मेरे काम कर निर्देशिका में, फ़ाइल.git/refs/remotes/origin/HEAD
अभी भी की ओर इशारा करते थाrefs/remotes/origin/develop
अब मौजूद नहीं है जो। इस स्थिति में फ़ाइल को निकालने से काम चल गया।