2012-11-14 12 views
12

मी और एक बड़ी टीम के कुछ अन्य लोग इस परियोजना पर एक अलग पृष्ठ पर काम कर रहे हैं। आइए इसे समूह पृष्ठ पर कॉल करें। जबकि हम समूह पृष्ठ पर काम करते हैं, हमें अपूर्ण कोड का आदान-प्रदान करने की आवश्यकता होती है, कोड जिसे हम केंद्रीय रेपो में नहीं भेजना चाहते हैं। और इस समय के दौरान, हम समूह पृष्ठ से संबंधित सुविधाओं पर भी काम नहीं करते हैं, हमें केंद्रीय सर्वर को प्रतिबद्ध करने और धक्का देने की आवश्यकता है। मैं इस समस्या के समाधान देख रहा हूं, यहां मेरे विचार हैं। कृपया उन पर टिप्पणी करें।एक नंगे गिट रेपो से दूसरे में कैसे धक्का देना है?

हम उच्च अप्स के कारण वास्तविक रेपो सर्वर में शाखा नहीं बना सकते हैं।

  1. एक-दूसरे के लिए अंतर बनाएं और ईमेल करें, फिर परिवर्तन खोएं और जब हमें समूह पृष्ठ पर वापस जाने की आवश्यकता हो तो diff का उपयोग करें। ईमेल प्राप्त करने वाले व्यक्ति को diff लागू होता है। आदि
  2. हम अपने कोड में बदलाव करते हैं, इसे प्रतिबद्ध करते हैं, लेकिन इसे धक्का नहीं देते हैं। फिर जो भी उस अपूर्ण कोड की आवश्यकता है, वह सीधे हमसे खींच सकता है।
  3. - बड़े ध्वज के साथ केंद्रीय सर्वर का एक और क्लोन बनाएं। इसलिए हम इसे समूह पृष्ठ के लिए स्थानीय-केंद्रीय सर्वर के रूप में देख सकते हैं। हम इसे से खींच सकते हैं और समूह पृष्ठ के लिए एक अलग वर्कस्पेस बना सकते हैं। हम इसे धक्का और खींच सकते हैं।

अब इनमें से प्रत्येक में समस्याएं हैं।

  1. बहुत कठिन है। मैं इसके लिए गिट का उपयोग करना चाहता हूं।
  2. जब किसी ने मुझसे खींचा है, और फिर एक नई सुविधा पर काम किया है, और फिर वह (केंद्रीय सर्वर पर) धक्का देता है, तो जो भी उसने मुझसे खींचा है उसे सर्वर पर धक्का नहीं दिया जाता है। हमारे समूह पृष्ठ कोड पूर्ण होने पर वह आखिरकार सर्वर पर कैसे पहुंचाएगा।
  3. एक ही समस्या। क्या मैं इस स्थानीय-केंद्रीय सर्वर से मुख्य सर्वर पर धक्का देता हूं? दोनों पाठ्यक्रम के नंगे repos हैं। क्या एक नंगे क्लोन से मुख्य जिथब रेपो तक धक्का देने का कोई तरीका है?
+0

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

+0

चलो बस कहना है कि मुझे अनुमति नहीं है। यदि मैं कहता हूं, तो क्या मैं अंत में अपने मास्टर को उस बिट बाल्टी रेपो से परिवर्तनों को धक्का दे पाऊंगा? –

+0

आप सीधे बिटबकेट से नहीं दबाएंगे। आप अपनी टीम के साथ सहयोग करने के लिए उस रेपो का उपयोग करेंगे। आप सभी बदलाव करेंगे, उन परिवर्तनों को बिटबकड में दबाएंगे, उन परिवर्तनों को अपने स्थानीय रेपो (अपनी मशीन) में खींचें, फिर अपने स्थानीय रेपो से अपने जीथब मास्टर को दबाएं। सही बात? –

उत्तर

7

3 आपका सबसे अच्छा विकल्प है। असल में, वास्तव में गिट का उपयोग करने का इरादा है; व्यक्तिगत घटकों के लिए भंडार के साथ, जो काम पूरा होने पर अधिक केंद्रीय भंडार में भोजन करते हैं।

किसी और के परिवर्तन को धक्का देने में कोई समस्या नहीं है। आइए कहें कि आप एक बदलाव करते हैं, और इसे समूह पृष्ठ भंडार में धक्का देते हैं। फिर मैं इसे खींचता हूं, कुछ बदलाव करता हूं, और उन्हें वापस धक्का देता हूं। अब हम तय करते हैं कि हम कर चुके हैं। यदि मैं केंद्रीय भंडार में धक्का देता हूं, तो उस पुश में मेरे दोनों परिवर्तन शामिल होंगे, और आपके परिवर्तन जो मेरे परिवर्तनों पर आधारित थे।

आपको एक नंगे रेपो से दूसरे में धक्का देने की आवश्यकता नहीं है। गिट आपके स्थानीय रेपो से एक या अधिक रिमोट रिपोज़ में धक्का देकर काम करता है। जब आप क्लोन करते हैं, तो "मूल" नामक एक डिफ़ॉल्ट रिमोट रेपो होता है। लेकिन आप जितना चाहें उतने दूरस्थ रिमोट कॉन्फ़िगर कर सकते हैं। इसे स्थापित करने के लिए, मान लीजिए कि आपने केंद्रीय रेपो से क्लोन किया है; जिसे "उत्पत्ति" कहा जाता है। अब आप एक नंगे रेपो बनाते हैं: यह ssh://some-machine.corp.com/path/to/groups-repo.git पर है। अपने स्थानीय कामकाजी रेपो में, बस git remote add groups ssh://some-machine.corp.com/path/to/groups-repo.git करें, और आपके पास उस समूह रेपो का संदर्भ होगा। अब आप git fetch, git pull, git push और groups के साथ-साथ origin के साथ भी उपयोग कर सकते हैं।

+0

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

+0

@ कैफीन लगभग इसे मिला। एक चाल यह है कि आपको एक अलग कार्यक्षेत्र में क्लोन करने की आवश्यकता नहीं है। आप केवल एक वर्कस्पेस में एकाधिक रिमोट बना सकते हैं; आप एक स्थानीय शाखा का उपयोग कर सकते हैं जो "समूह/मास्टर" को ट्रैक करता है, और दूसरा जो "मूल/मास्टर" ट्रैक करता है, और जब भी आप 'गिट चेकआउट' के साथ चाहते हैं तो उनके बीच स्विच करें। यदि आप चाहें तो आप एकाधिक वर्कस्पेस का उपयोग कर सकते हैं, लेकिन कभी-कभी कई रिमोट्स के साथ एक वर्कस्पेस रखना वास्तव में सुविधाजनक होता है। और हाँ, जब आप विकास कर रहे हैं, तो जिसने समूह मशीन से नवीनतम कोड खींच लिया है उसे मुख्य रेपो तक पहुंचा सकता है। –

+0

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

1

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

तो, यदि आप अपने सहकर्मियों को आप से खींचते हैं, तो भी आप जिस तरह से जाते हैं, वे आपकी प्रतिबद्धता को मुख्य रेपो में डाल सकते हैं। वही बात विकल्प 3 के साथ लागू होगी, अपने टीम गिट सर्वर का उपयोग करें, और तैयार होने पर, आप में से कुछ अपनी मशीन पर खींचें और वहां से मुख्य सर्वर पर धक्का दें।

तो, आपके मामले में, विकल्प 3 सबसे आसान होगा। हालांकि, एक बार जब आप मुख्य रेपो पर जाते हैं, तो यह रेपो आपके द्वारा अपने निजी सर्वर में किए गए सभी कामों को देगा। इसलिए, मुझे यह भी यकीन नहीं है कि यह आपके लिए अपने सर्वर के लिए वास्तव में उपयोगी है (जब तक कि आप यह सुनिश्चित नहीं करना चाहते कि कोई और आपकी "निजी" शाखा को स्पर्श न करे)।

2

क्या एक नंगे क्लोन से मुख्य गीथब रेपो तक धक्का देने का कोई तरीका है?

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

आप जगह है जहाँ आप स्थानीय गुरु 'है, और चलाने के लिए ssh:

git push origin master 

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

+0

क्या आप टिप्पणी कर सकते हैं कि दूरस्थ मास्टर से स्थानीय मास्टर को कैसे खींचें? 'गिट पुल मूल मास्टर' शिकायत करता है "यह ऑपरेशन एक कार्य पेड़ में चलाना चाहिए" – SOUser

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