मेरे पास एक नंगे भंडार है जो मेरी परियोजना के लिए केंद्रीय स्टोर के रूप में उपयोग किया जाता है। सभी डेवलपर्स इसके git clone <repo>साथ साझा करने के लिए करते हैं । जब वे क्लोन करते हैं, वे गुरु शाखा के एक चेकआउट मिल (जब तक वे करते हैं git clone -n) क्योंकि repo.git/HEADशामिल ref: refs/heads/master, इस बनाने सक्रिय शाखा ।
सवाल यह है कि मैं सक्रिय शाखा को कैसे ठीक से बदलूं ? मैं बस repo.git/HEADसीधे फ़ाइल को हैक कर सकता था , लेकिन यह बुरा लगता है और, ठीक है, हैकी।
मैंने git checkout <otherbranch>रेपो .gitडायरेक्टरी में करने की कोशिश की , लेकिन वह असफल रहा क्योंकि मैं एक काम के पेड़ में नहीं था।
मैंने कोशिश की, git update-ref HEAD refs/heads/otherbranchलेकिन अपडेटेड रेफरी / हेड्स / मास्टर को रिफ्स / हेड्स / अदरब्रंच (ठीक है, मैंने वही किया जो डमी रिपॉजिटरी में था, न कि मेरा प्रोडक्शन वन!)
मैंने कोशिश की git update-ref --no-deref HEAD refs/heads/otherbranchऔर वह लगभग काम कर गया। इसने HEADफ़ाइल को अद्यतन किया , लेकिन इसने इसे इंगित किए गए वचन के SHA1 में सेट कर दिया refs/heads/otherbranch।
मैं git संस्करण के साथ परीक्षण कर रहा हूं 1.7.0.2.msysgit.0।
मैं अनुमान लगा रहा हूं कि ऐसा करने का कोई तरीका नहीं है git push, क्योंकि सभी और विविध को आपकी डिफ़ॉल्ट शाखा बदलने की अनुमति थोड़ी असुरक्षित (!) लगती है, लेकिन निश्चित रूप से रेपो .gitडायरेक्टरी में इसे सीधे हैक करने की तुलना में बेहतर तरीका है HEAD।