2011-10-11 25 views
5

तो मैं एक Git भंडार बना लिया है, कुछ टैग और मेरे कार्य की नकल पर रिमोट की स्थापना की, और फिरमैं एक गिट भंडार कैसे क्लोन कर सकता हूं और रिमोट्स रख सकता हूं?

git push --mirror my.remote.repository 

माना जाता है, Git से धक्का देने --mirror भी धक्का होगा के साथ अपने सर्वर से भंडार धक्का दिया रिमोट्स जो मैंने स्थापित किया है।

हालांकि, अगर मैं

git clone my.remote.repository 

मैं रिमोट है कि मैं मूल रूप से बनाया नहीं दिख रहा। क्या मुझे रिमोट क्लोन करने के लिए विशेष वाक्यविन्यास की आवश्यकता है? क्या दर्पण वास्तव में रिमोट भेजता है? मुझसे कहां गलती हो गई?

संपादित करें: शायद मेरा वर्कफ़्लो अजीब है: यहां मैं जो करने की कोशिश कर रहा हूं वह यहां है। रेपो प्रारंभ में एक अन्य प्रोजेक्ट (ए) का क्लोन है जिसे मैं नियंत्रित नहीं करता, जहां मैंने रिमोट का नाम बदलकर 'अपस्ट्रीम' कर दिया है। मैंने एक नई 'मास्टर' शाखा बनाई है, और मेरी कार्यशील प्रति में परिवर्तन करने और उन्हें तैनात करने का इरादा रखता हूं। मैं कभी-कभी मूल भंडार (ए) से अद्यतन खींचता हूं (मूल, असम्बद्ध शाखा में स्विचिंग और अपस्ट्रीम से खींच रहा हूं)। हालांकि, मैं अन्य लोगों के साथ काम कर रहा हूं, जिनमें से सभी भी ऐसा करने में सक्षम होना चाहिए। लक्ष्य प्रारंभिक भंडार (ए) से बग फिक्स के साथ मास्टर शाखा को अद्यतन करना और 'मास्टर' शाखा में परिवर्तन करना है। इस वजह से, जब कोई डेवलपर रिपोजिटरी क्लोन करता है, तो उन्हें अपस्ट्रीम शाखा को विरासत में लेना चाहिए ताकि वे वास्तव में ऐसा कर सकें। संक्षेप में, मैं एक अलग परियोजना से अद्यतन खींचने के लिए 'अपस्ट्रीम' शाखा का उपयोग करने की कोशिश कर रहा हूं। मैंने ऐसा करने के लिए एक सबमिशन का उपयोग नहीं किया है क्योंकि 'अपस्ट्रीम' शाखा वास्तव में भंडार में 95% फ़ाइलों के लिए ज़िम्मेदार है और पूरी परियोजना को अपस्ट्रीम से फ़ाइलों के बिना कोई समझ नहीं आता है।

+0

शायद मुझे कुछ याद आ रही है, लेकिन अगर ऐसा लगता है कि आपके पास स्थानीय रूप से शाखा है (जिसे 'foo' कहा जाता है) कहें, जिसे आप' अपस्ट्रीम/मास्टर 'से अपडेट कर रहे हैं। आप या तो उस शाखा को (या साथ ही साथ 'मास्टर') को एक नंगे भंडार में क्यों नहीं दबाते हैं जिससे अन्य लोग क्लोन कर सकते हैं? या बस उन्हें अपने भंडार को क्लोन करने दें? किसी भी मामले में वे उन शाखाओं को किसी भी स्तर पर '--mirror' का उपयोग किए बिना रिमोट-ट्रैकिंग शाखाओं के रूप में प्राप्त करेंगे। –

+0

@ मार्क-लांगएयर राइट, लेकिन उन दूरस्थ शाखाएं मूल रूप से अपस्ट्रीम सर्वर के बजाय हमारे स्वयं के सर्वर को ट्रैक कर रही हैं। कुछ हद तक उपयोगी होने पर, इसका मतलब यह है कि अन्य लोग (आसानी से) अपस्ट्रीम (केवल पढ़ने के लिए) से अपडेट खींचने में सक्षम नहीं होंगे और फिर उन्हें अपने सर्वर (मूल) पर प्रतिबद्ध करेंगे। – Zxaos

+0

वे ऐसा कर सकते हैं - उन्हें केवल एक अतिरिक्त रिमोट जोड़ने की आवश्यकता है जो अन्य भंडार को संदर्भित करता है। –

उत्तर

2

(यह एक विशिष्ट कार्यप्रवाह नहीं है, लेकिन मैं वैसे भी सीधा सवाल का जवाब देने की कोशिश करेंगे ...)

git push --mirror वास्तव में रिमोट पर एक ही नाम के लिए अपने रिमोट ट्रैकिंग शाखाओं धकेल दिया जाएगा। हालांकि, जब आप क्लोन करते हैं, तो आप डिफ़ॉल्ट रूप से केवल refs/heads के तहत रेफरी प्राप्त करते हैं, जिन्हें refs/remotes/origin/ के तहत रिमोट-ट्रैकिंग शाखाओं में मैप किया जाता है। रिमोट से रिमोट-ट्रैकिंग शाखाएं प्राप्त करने के लिए आप git clone --mirror के साथ क्लोन कर सकते हैं, लेकिन यह विकल्प --bare का तात्पर्य है।

यदि आप एक काम करने वाले पेड़ के साथ एक भंडार चाहते हैं, जिनकी शाखाएं रिमोट से प्रतिबिंबित होती हैं, तो आप हमेशा एक ही नाम पर प्रत्येक रेफरी लाने के लिए कॉन्फ़िगरेशन विकल्प remote.origin.fetch में रीफस्पेक बदल सकते हैं, लेकिन फिर मुझे संदेह है कि असली समस्या है कि आप एक बहुत असामान्य वर्कफ़्लो का उपयोग कर रहे हैं।

संयोग से, भले ही आप उन तकनीकों में से एक का उपयोग refs कि लाई जाती हैं, की मैपिंग को बदलने के लिए, इस रिमोट खुद को, जो भंडार के Git config में परिभाषित कर रहे हैं क्लोन नहीं होगा - git clone नहीं है क्लोन .git/config से कुछ भी, जिसे निजी जानकारी माना जाता है।

+0

मैंने अपने वर्कफ़्लो के बारे में कुछ जानकारी जोड़ा, अगर इस प्रश्न को और अधिक समझ में मदद मिलती है। – Zxaos

+0

तो ऐसा करने के तरीके की तरह दिखता है। मुझे शायद यह ध्यान रखना चाहिए कि, मैंने इस वर्कफ़्लो को तोड़कर और सबमिड्यूल का उपयोग करके समाप्त कर दिया। – Zxaos

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

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