2012-09-16 12 views
18

मेरे पास एक सर्वर है जिस पर मेरे पास धक्का देने के लिए एक नंगे भंडार है। हालांकि, मेरे सर्वर को मास्टर शाखा की एक कार्यशील प्रतिलिपि की आवश्यकता है।एक नंगे भंडार की एक कार्य प्रति प्राप्त करना

मैं एक कार्यशील प्रति कैसे प्राप्त करूं और केवल एक नंगे भंडार से?

उत्तर

18

आप बस एक ही मशीन पर एक और निर्देशिका के लिए भंडार क्लोन कर सकते हैं:

git clone /bare/repo/dir.git 

वर्तमान निर्देशिका अपने रेपो की एक गैर नंगे क्लोन बन जाएगा, और आप master शाखा के एक चेकआउट मिलेगा खुद ब खुद। फिर आवश्यकतानुसार अद्यतन करने के लिए git pull जैसे सामान्य आदेशों का उपयोग करें।

एक साइड लाभ के रूप में, यह ऑपरेशन बहुत ही कुशल है - यदि आप git clone पर स्थानीय निर्देशिका निर्दिष्ट करते हैं, तो गिट हार्ड लिंक का उपयोग करके उन दो रेपो के बीच वस्तुओं को साझा करने का प्रयास करेगा।

+0

क्या यह ऑपरेशन अपडेट के लिए काम करता है? –

+0

किस तरह के अपडेट? क्लोन रिपोजिटरी सिर्फ एक और क्लोन है, इसलिए इसके काम करने वाले पेड़ को 'गिट पुल' का उपयोग करके अद्यतन करने की आवश्यकता होगी। यदि आपको स्वचालित रूप से ऐसा होने की आवश्यकता है, तो आप क्लोन पर 'गिट पुल' चलाने के लिए सर्वर के 'पोस्ट-प्राप्त' हुक की व्यवस्था कर सकते हैं। – user4815162342

+0

ओह ठीक है, जाहिर है। मैं "क्लोन" के मामले में बहुत सोच रहा था। –

8

मैं "अलग काम कर पेड़" दृष्टिकोण के लिए देख रहा था (के रूप में here देखा):

git init --bare 

git config core.worktree /somewhere/else/ 
git config core.bare false 

git checkout -f 
+3

ध्यान दें कि आपको 'core.work' पंक्ति से पहले 'core.bare' चलाने की आवश्यकता है, जैसा कि ब्लॉग पोस्ट की टिप्पणियों में उल्लेख किया गया है (और अभी मेरे द्वारा पुष्टि की गई है)। अन्यथा आपको त्रुटि 'घातक: core.bare और core.worktree समझ में नहीं आती है'। – craigpatik

+0

अजीब, मैंने भी किया: https://gist.github.com/joallard/8871673। शायद गिट में व्यवहार कुछ बिंदु पर बदल गया? –

+0

ऐसा लगता है कि मुझे इसकी आवश्यकता है * बंद *, लेकिन आपका लिंक टूटा हुआ है और ऊपर दिए गए आदेश वास्तव में पर्याप्त रूप से समझाया नहीं गया है कि मैं उन्हें अपनी आवश्यकताओं के लिए समायोजित कर सकता हूं। क्या आप लिंक को ठीक कर सकते हैं और/या समझा सकते हैं कि वहां क्या हो रहा है? – Wildcard

3

यह अन्य 2 बंद एक रिफ है उत्तर लेकिन यह मेरे उपयोग के मामले के लिए अंतर को भरता है - यह मूल से रेपो को अपडेट करने और शाखाओं और किसी भी गिट ऑपरेशन की जांच करने के लिए काम करता है क्योंकि आप एक सामान्य कंप के साथ समाप्त होते हैं लेइट गिट रेपो।

git clone /path/to/bare/repo /new/path/to/full/repo 
cd /new/path/to/full/repo 
git remote set-url origin [email protected]:swift/swift.git 

तो कोड के इन 3 लाइनों आप कर सकते हैं को क्रियान्वित करने के बाद git pull और git branch और git checkout some_branch और इतने पर है, क्योंकि अब आप अपने दूरस्थ रेपो से जुड़ा एक सामान्य पूरा Git रेपो की है।

+0

आपका एकमात्र व्यक्ति जिसने कुछ_ब्रैंच का उल्लेख किया है, आपको विस्तृत करना चाहिए। मैं विशेष रूप से शाखा के लिए एक उदाहरण खोजने की कोशिश कर रहा था, और यह शाखा के लिए Google पर गर्म था, और ओक्यू का हिस्सा है। ... – blamb

1

यह है कि यह कैसे काम करता है:

$ git init --separate-git-dir /path/to/existing-bare-repository /path/to/workdir 
$ cd /path/to/workdir 
$ git checkout . 

देखा!

जानकारी के लिए: git init रिपोर्ट करेगा: Reinitialized existing Git repository in /path/to/existing-bare-repository। लेकिन आत्मविश्वास रखें। man git-init कहता है: किसी मौजूदा भंडार में गिट इनिट चलाना सुरक्षित है। यह उन चीज़ों को ओवरराइट नहीं करेगा जो पहले से मौजूद हैं।

जादू यह है कि git init अकेले आपकी फ़ाइलों को कार्य निर्देशिका में प्रकट नहीं करता है। आपको रूट निर्देशिका को चेकआउट करना होगा।

6

एक नंगे भंडार केवल एक कार्यशील निर्देशिका की .git निर्देशिका है, और स्थानीय कॉन्फ़िगरेशन फ़ाइल में एक प्रविष्टि है।क्या मैं के लिए क्या किया एक पूर्ण एक में एक नंगे भंडार कन्वर्ट है:

  • एक नई उपनिर्देशिका .git बनाएँ और सभी फ़ाइलों को नंगे रिपोजिटरी से वहाँ में bare = false
  • को bare = true बदलने के लिए .git/config फ़ाइल ले
  • संपादित करें
  • अपनी इच्छित शाखा देखें। यह भंडार से सभी फ़ाइलों को कामकाजी निर्देशिका में निकालता है।

आप Windows पर .git निर्देशिका पर छिपे हुए विशेषता सेट कर सकते हैं, लेकिन निर्देशिका के अंदर फाइलों पर नहीं

+1

एक आकर्षण की तरह काम करता है। बिटबकेट स्थापना से भंडार पुनर्प्राप्त करने में मदद की। – ibai

+0

उल्लू ..! यह पूरी तरह से मेरे लिए भी काम किया – Olu

संबंधित मुद्दे