दिलचस्प पोस्ट
क्या python urllib2 स्वचालित रूप से वेबपृष्ठ से ली गई जिज़िप डेटा को असम्परोड करता है? सर्वर पर क्रॉस-डोमेन अनुरोध को कैसे सक्षम करें? जावा में डिफ़ॉल्ट एक्सेस मॉडिफायर क्या है? क्या मैं प्रोग्राम को Google क्रोम एक्सटेंशन से devtools खोल सकता / सकती हूं? एक सूची में शामिल होना जिसमें पायथन के साथ पूर्णांक मान हैं मानचित्र फ़ंक्शन को समझना ऑब्जेक्ट गुण सूची में उद्देश्य-सी प्राप्त करें जीआईटी मर्ज – स्क्वाश का उपयोग कैसे करें? प्रिंटर जानकारी कैसे प्राप्त करें .नेट? सी # .Equals (), .ReferenceEquals () और == ऑपरेटर अजगर में यूटीसी टाइमस्टैम्प को datetime.date परिवर्तित करना पुन: लॉन्च किए जाने पर पिछली खुली गतिविधि में एंड्रॉइड ऐप वापस कैसे पहुंचे? मल्टीपल जेफ्रैम्स का प्रयोग: अच्छा या बुरा अभ्यास? जावास्क्रिप्ट में महीने के आखिरी दिन की गणना करें JQuery का उपयोग करके एक ड्रॉप-डाउन सूची (चयन करें बॉक्स) से चयनित पाठ प्राप्त करें

गिट: सक्रिय शाखा को एक नंगे रिपॉजिटरी में बदलने का सही तरीका है?

मेरे पास एक छोटी भंडार है जो कि मेरी परियोजना के लिए केंद्रीय स्टोर के रूप में उपयोग किया जाता है सभी डेवलपर्स इसके साथ साझा करने के लिए git clone <repo> करते हैं। जब वे क्लोन करते हैं, तो उन्हें मास्टर ब्रांच का एक चेकआउट मिलता है (जब तक वे git clone -n ) क्योंकि repo.git/HEAD ref: refs/heads/master repo.git/HEAD ref: refs/heads/master , यह सक्रिय शाखा बनाने के लिए

सवाल यह है, मैं सक्रिय शाखा को ठीक से कैसे बदलूं? मैं बस सीधे repo.git/HEAD फ़ाइल को हैक कर सकता हूं, लेकिन यह बुरा और ठीक है, repo.git/HEAD लगता है।

मुझे रेपो git checkout <otherbranch> निर्देशिका में git checkout <otherbranch> करने की कोशिश की, लेकिन यह विफल रहा क्योंकि मैं एक काम के पेड़ में नहीं था।

मैंने git update-ref HEAD refs/heads/otherbranch लेकिन वह सिर्फ refs / सिर / मास्टर refs / heads / otherbranch (ठीक है, मैं एक डमी भंडार में एक है, न कि मेरा उत्पादन एक के रूप में किया है) के रूप में एक ही होना करने के लिए!

मैंने git update-ref --no-deref HEAD refs/heads/otherbranch और लगभग काम किया। उसने HEAD फाइल को अपडेट किया, लेकिन इसे refs/heads/otherbranch द्वारा निर्देशित कमिट के एसएचए 1 में सेट किया।

मैं git संस्करण 1.7.0.2.msysgit.0 साथ परीक्षण कर रहा हूँ।

मैं अनुमान लगा रहा हूं कि यह git push माध्यम से करने का कोई रास्ता नहीं है, जिससे कि आपकी डिफ़ॉल्ट शाखा बदलने के लिए सभी प्रकार की विविधताएं थोड़ा असुरक्षित (!) लगती हैं, लेकिन निश्चित रूप से यह सीधे रेपो में करने का एक बेहतर तरीका है। HEAD फ़ाइल

वेब के समाधान से एकत्रित समाधान "गिट: सक्रिय शाखा को एक नंगे रिपॉजिटरी में बदलने का सही तरीका है?"

यदि आपके पास दूरस्थ नंगे रेपो तक पहुंच है, तो यह आलेख सुझाता है :

 git symbolic-ref HEAD refs/heads/mybranch 

जो आपके रिपॉजिटरी में हेड फ़ाइल को अपडेट करेगा ताकि इसमें शामिल हो:

 ref: refs/heads/mybranch 

जैसा कि git-symbolic-ref में दर्ज़ किया गया है


अगर आपके पास दूरस्थ रेपो तक पहुंच नहीं है, तो मेरा पिछले जवाब देखें ।


याद रखें कि git remote set-head जैसे कमांड:

  • रिमोट रेपो की डिफॉल्ट शाखा को परिवर्तित नहीं करता है
    यह आपके स्थानीय रेपो में refs/remotes/<name>/HEAD रूप में संग्रहीत दूरस्थ ट्रैकिंग शाखा में बदलाव करता है

  • HEAD ही नहीं बदलता है (फिर से, केवल refs/remotes/<name>/HEAD ), इसलिए git symbolic-ref की आवश्यकता है

तो git remote set-head यहां उत्तर नहीं है।
git symbolic-ref HEAD है, अगर आपके पास दूरस्थ रेपो तक सीधी पहुंच है

इसके अलावा, अगर आपके पास एक git remote set-head करके, नंगे रेजोजिटरी तक पहुंच नहीं है और आप कर चुके हैं

यह पिछले प्रतिक्रिया देखें

जिस शाखा को आप उपयोग करना चाहते हैं उस शाखा को HEAD संदर्भ बदलने की आवश्यकता को बदलने के लिए

पहले नारंगी रिपॉजिटरी में सभी संदर्भों को सूचीबद्ध करें

 $find ref 

फिर अपनी शाखा के संदर्भ को ढूंढें, प्रारूप निम्नानुसार होगा: refs/heads/<my_branch> तो अगले कदम वर्तमान संदर्भ की जांच करना है, बस टाइप करें:

 $git symbolic-ref HEAD 

तो आप जानते हैं कि वर्तमान शाखा कौन है तो जरूरत के अनुसार इसे अपडेट करें।

 $git sumbolic-ref HEAD ref/heads/<my_branch> 

थान्ट यह है का आनंद लें।

मेरे पास हमारे सर्वर पर एक बेजोड़ रेपो है और यह सफलतापूर्वक फ़ाइलों का उपयोग करने में सक्षम है

 git clone //server/repo/directory -b branch_name 

एक नए स्थानीय भंडार में हालांकि मैनपेज का कहना है कि यह केवल गैर-बेक रिपॉजिटरी के लिए है।

मैं आवेदन करने से पहले और बाद में दो निर्देशिकाओं की तुलना करता हूं

git symbolic-ref HEAD refs/heads/mybranch

और ऐसा प्रतीत होता है कि केवल repo.git / HEAD फ़ाइल को बदल दिया गया था, शायद यह फ़ाइल को "हैक" करने के लिए काफी सुरक्षित है।