2008-11-13 4 views
5

पर परिवर्तन खींचकर मैंने गिट मास्टर को क्लोन किया और क्लोन पर बहुत सारे बदलाव किए। मैंने क्लोन पर इन परिवर्तनों को तब से किया है और अब मास्टर क्लोन पर मौजूद कार्बन प्रति बनना चाहते हैं।गिट - क्लोन से मास्टर को

मैंने मास्टर में परिवर्तन को धक्का देने के लिए क्लोन पर गिट पुश का प्रयास किया है - लेकिन कुछ भी मैं मास्टर को अपडेट नहीं करता हूं।

मैं मास्टर को क्लोन पर क्या है इसकी सटीक प्रतिलिपि बना सकता हूं? क्लोन को अपडेट करने और क्लोन के साथ मास्टर सिंक होने का वर्कफ़्लो कमांड क्या है?

उत्तर

6

2 प्रकार के गिट भंडार, नंगे और गैर-बेयर हैं। एक गैर-नंगे भंडार कोई भी भंडार है जिसमें 'कार्यशील प्रतिलिपि' है यानी वर्तमान में चेक की गई भंडार का कुछ हिस्सा है।

आप एक गैर-नंगे भंडार में धक्का दे सकते हैं, लेकिन चेक आउट आउट शाखा को आपके द्वारा धक्का देने वाली शाखा के समान ही चेक आउट आउट की गई प्रतिलिपि अपडेट नहीं होगी। इसका कारण यह है की जाँच की प्रतिलिपि परिवर्तन है कि प्रतिबद्ध नहीं कर रहे हैं हो सकता है, और बिना आप स्पष्ट रूप से पूछ Git कभी परिवर्तन को नष्ट नहीं होगा एक पूर्ण के लिए (आमतौर पर इस तरह के आदेशों एक --hard तर्क है) Why won't I see changes in the remote repo after "git push"? और How would I use "git push" to sync out of a firewalled host?

पढ़ें समस्या का वर्णन और एक संभावित समाधान। चेतावनी का शब्द, यदि आपने रिमोट रेपो में धक्का दिया है, तो उस रिमोट-रेपो में किए गए किसी भी गैर-प्रतिबद्ध परिवर्तन को त्यागना होगा।

आम तौर पर ऐसा लगता है कि आप जिस दृष्टिकोण को चाहते हैं वह वास्तव में गिटर्स द्वारा अपनाया नहीं जाता है, क्योंकि यह वास्तव में वितरित भंडार मानसिकता से मेल नहीं खाता है। यह सुनिश्चित करने के लिए आपकी खुद की ज़िम्मेदारी है कि रिपो की आपकी प्रति अद्यतित है।

+0

गैरेथ, इस स्पष्टीकरण के लिए धन्यवाद। क्या कैनोलिक समाधान है कि आपको तीसरे भंडार की आवश्यकता है जिसमें पेड़ से जुड़ा न हो? क्या वह केंद्रीय भंडार की एसवीएन अवधारणा पर वापस नहीं आ रहा है? –

+0

गिट धक्का देने से खींचने के आसपास और अधिक बनाया गया है। गिट के साथ एक केंद्रीकृत प्रणाली का अनुकरण करना निश्चित रूप से संभव है, हम अपने कार्यालय में यही करते हैं।हमारे लिए, गिट के लाभ ब्रांचिंग की आसानी हैं, स्रोत नियंत्रण की विकेन्द्रीकृत प्रकृति नहीं – Gareth

5

यदि आपने अपना खुद का क्लोन बनाया है जो मास्टर से आसानी से सुलभ है, तो आप आसानी से क्लोन से मास्टर में परिवर्तन खींच सकते हैं। बस:

git pull /path/to/clone 

यह क्लोन के सिर से मास्टर के सिर में परिवर्तन खींच देगा।

एक और आम मामला यह है कि क्लोन किसी अन्य नेटवर्क पर है या कुछ सीधे मास्टर से आसानी से सुलभ नहीं है। इस मामले में, आप में से एक इस्तेमाल कर सकते हैं:

  • एक आम भंडार है कि क्लोन करने के लिए धक्का और मास्टर परिवर्तन का एक बंडल ले जाने के लिए से (जैसे github या सिर्फ एक नंगे कहीं भंडार।)
  • git-bundle खींचती एक फ़ाइल के रूप
  • git-format-patch और git-am ईमेल
2

मैं गैरेथ की और ग्रेग के जवाब की तरह के माध्यम से परिवर्तन भेजने के लिए। मैं बस जोड़ता हूं कि मुझे दूसरों के साथ काम सिंक्रनाइज़ करने के लिए एक नंगे भंडार का उपयोग करने में वास्तव में आसान लगता है। इससे किसी को भी अपने परिवर्तन (शाखाओं सहित) को नंगे भंडार में धक्का/खींचने देता है और फिर अन्य फिट बैठकर खींच/खींच/विलय कर सकते हैं। यह एक एकल, केंद्रीय भंडार के समान नहीं है क्योंकि प्रत्येक क्लोन एक पूर्ण भंडार है।