यहाँ gitglossary से एक नंगे भंडार की परिभाषा है :
एक नंगे रिपॉजिटरी आम तौर पर एक .गित प्रत्यय के साथ उचित रूप से नामित निर्देशिका है जिसमें संशोधन नियंत्रण के तहत किसी भी फाइल की स्थानीय रूप से चेक-आउट कॉपी नहीं है। अर्थात्, सभी Git व्यवस्थापकीय और नियंत्रण फ़ाइलें जो आम तौर पर छिपी हुई हैं .it उप-निर्देशिका में सीधे मौजूद होती हैं रिपॉजिटरी.गीत निर्देशिका में मौजूद होती हैं, और कोई अन्य फाइल मौजूद नहीं होती है और चेक आउट हो जाती है। आमतौर पर सार्वजनिक रिपोजिटरी के प्रकाशक नंगे रिपोजिटरी उपलब्ध कराते हैं।
मैं यहां इसलिए पहुंचा क्योंकि मैं एक "स्थानीय भंडार" के साथ खेल रहा था और मैं जो कुछ भी चाहता था वह करने में सक्षम होना चाहता था जैसे कि यह एक दूरस्थ भंडार हो। मैं सिर्फ खेल रहा था, git के बारे में जानने की कोशिश कर रहा था। मुझे लगता है कि यह स्थिति है जो कोई भी इस उत्तर को पढ़ना चाहता है।
मैं एक विशेषज्ञ की राय या कुछ विशिष्ट प्रति-उदाहरणों के लिए प्यार करूंगा, हालांकि ऐसा लगता है कि (कुछ git स्रोत कोड के माध्यम से अफवाह के बाद जो मुझे मिला) बस फ़ाइल में जा रहा है .git/config
और मुख्य विशेषता को नंगे को सच करने के लिए सेट कर रहा है , git आपको जो भी करने देगा आप रिपॉजिटरी को दूरस्थ रूप से करना चाहते हैं। यानी निम्नलिखित पंक्तियों में मौजूद होना चाहिए .git/config
:
[core]
...
bare = true
...
(यह मोटे तौर पर कमांड क्या git config --bool core.bare true
करेगा, जो संभवतः अधिक जटिल स्थितियों से निपटने के लिए अनुशंसित है)
इस दावे के लिए मेरा औचित्य यह है कि, गिट स्रोत कोड में, परीक्षण के दो अलग-अलग तरीके प्रतीत होते हैं यदि कोई रेपो नंगे है या नहीं। एक वैश्विक चर की जाँच करके है is_bare_repository_cfg
। यह निष्पादन के कुछ सेटअप चरण के दौरान सेट किया गया है, और .git/config
फ़ाइल में पाए गए मूल्य को दर्शाता है । एक फ़ंक्शन है is_bare_repository()
। यहाँ इस समारोह की परिभाषा है:
int is_bare_repository(void)
{
/* if core.bare is not 'false', let's see if there is a work tree */
return is_bare_repository_cfg && !get_git_work_tree();
}
मेरे पास पूर्ण आत्मविश्वास के साथ यह कहने के लिए समय और विशेषज्ञता नहीं है, लेकिन जहां तक मैं बता सकता हूं कि क्या आपके पास bare
विशेषता true
है .git/config
, तो यह हमेशा वापस आ जाएगी 1
। बाकी फ़ंक्शन संभवतः निम्न स्थिति के लिए है:
- core.bare अपरिभाषित है (अर्थात न तो सत्य और न ही असत्य)
- कोई वर्कट्री नहीं है (यानी .it उपनिर्देशिका मुख्य निर्देशिका है)
मैं बाद में इसका प्रयोग करूंगा, लेकिन यह इंगित करता प्रतीत होगा कि core.bare = true को सेट करना config फाइल से core.bare को हटाने और निर्देशिकाओं को ठीक से सेट करने के बराबर है।
किसी भी दर पर, core.bare = true सेट करना निश्चित रूप से आपको इसे पुश करने की अनुमति देगा, लेकिन मुझे यकीन नहीं है कि अगर प्रोजेक्ट फाइलों की उपस्थिति कुछ अन्य संचालन को भटकाएगी। यह दिलचस्प है और मुझे लगता है कि रिपॉजिटरी को धक्का देने और स्थानीय स्तर पर क्या हुआ (यानी git status
परिणाम का बोध कराएं) देखें
mv repo/.git repo.git; rm -rf repo