2016-09-16 8 views
5

मैंने बहुत सारी जानकारी पढ़ी है लेकिन अभी भी समझ में नहीं आ रही है। मान लीजिए कि हमारे पास सर्वर मशीन और क्लाइंट मशीन है। क्लाइंट एसएसएच के माध्यम से सर्वर से जोड़ता है। गिट के लिए सर्वर पर कोई प्रमाणीकरण नहीं है। मैं सबसे सरल विन्यास पर विचार करता हूं- तीन ग्राहक और एक सर्वर हैं। सर्वर गिट रेपो परगिट - सर्वर पर गिट की आवश्यकता है?

क्या हमें इस मामले में सर्वर पर गिट स्थापित करने की आवश्यकता है? मैं उलझन में हूं git push और git clone आदेश क्लाइंट पक्ष पर गिट का उपयोग करके निष्पादित किए जाते हैं।

+0

यह इस बात पर निर्भर करता है कि आप सर्वर पर गिट के साथ क्या करना चाहते हैं ... – deceze

+0

@deceze मैं सबसे सरल संस्करण तीन क्लाइंट और एक सर्वर पर विचार करता हूं। सर्वर गिट रेपो पर संग्रहीत किया जाता है। –

+0

आपको यहां कुछ उपयोगी जानकारी मिल जाएगी: https://git-scm.com/book/en/v1/Git-on-the- सर्वर – xbonez

उत्तर

6

के रूप में अन्य लोगों ने बताया, आप एक "सर्वर" अर्थ में "एक बड़ी मशीन कहीं इंटरनेट पर" की जरूरत नहीं है मुफ्त (छोटे दलों के लिए) सर्वर का उपयोग कर सकते हैं, लेकिन अगर आप git push का उपयोग करते हैं, जिस मशीन पर आप git push चलाते हैं वह तकनीकी रूप से क्लाइंट मशीन है, और जिसे आप दबाते हैं वह इस ऑपरेशन के दौरान सर्वर है।

जब आप git push चलाते हैं, तो गिट अनिवार्य रूप से ssh [email protected] 'git-receive-pack /path/to/repo' चलाता है, यानी यह सर्वर पर git-receive-pack चलाता है। फिर, स्थानीय git push एसएसएच कनेक्शन के माध्यम से रिमोट git-receive-pack से बात करता है।

संक्षेप में: एसएसएच के माध्यम से धक्का देते समय आपको सर्वर पर गिट की आवश्यकता होती है। जरूरी नहीं कि एक पूर्ण स्थापना हो, लेकिन कम से कम निष्पादन योग्य git-receive-pack पुश करने के लिए और git-upload-pack लाने/खींचने के लिए।

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

+0

आपके उत्तर के लिए धन्यवाद। क्या गिट-प्राप्त-पैक कुछ सॉकेट बनाता है जिसके माध्यम से यह क्लाइंट गिट के साथ काम करता है? –

+0

वास्तव में नहीं: यह एसएसएच कनेक्शन से जुड़े stdin/stdout के माध्यम से संचार करता है। यदि आपका प्रश्न "सर्वर पर कौन से बंदरगाहों को खुलता है", तो आपको केवल एसएसएच की आवश्यकता है। जहां तक ​​नेटवर्क का संबंध है, यह सिर्फ एक एसएसएच कनेक्शन है। –

+0

बहुत बहुत धन्यवाद। आप कल्पना भी नहीं कर सकते कि मैं इस सवाल को कितनी देर तक हल नहीं कर सका। –

0

गिट संस्करण नियंत्रण वितरित किया जाता है। आपको सर्वर रखने की आवश्यकता नहीं है। आप और आपका मित्र सर्वर के बिना गिट पुल और गिट पुश के साथ 2 मशीनों पर काम कर सकते हैं (वितरित संस्करण नियंत्रण का लाभ)।

तुम हमेशा की तरह https://bitbucket.org/

1

बस पहले से ही बहुत अच्छे उत्तरों में जोड़ने के लिए।

जब गिट की बात आती है तो 'सर्वर' की धारणा भ्रमित होती है। हम सोचते हैं कि वहां कुछ केंद्रीय बिंदु हैं जहां हमारे तकनीकी जीवन में सब कुछ 'जीवन' है, हम इसके लिए सर्वर सोचते हैं। हम इस विचार को सहज (सही या गलत तरीके से)

वितरित प्रणाली होने के नाते, गिट-बॉल की प्रत्येक क्लोन प्रति तकनीकी रूप से भंडार है।

कहा जा रहा है कि, यह अभी भी आपके भंडार के लिए कुछ 'केंद्रीय' नियंत्रण का एक बहुत अच्छा विचार है।

बिटबकेट या जिथब, या यहां तक ​​कि आपका स्वयं का बॉक्स कहीं भी बैठा है, वह 'मास्टर' रिपोजिटरी के रूप में कार्य कर सकता है।

बिट का व्यावसायिक उपयोग आमतौर पर 'मास्टर' रेपो के साथ व्यवस्थित किया जाता है, बिटबकेट कहते हैं, जो केवल pull requests द्वारा लिखने योग्य है। टीम के सदस्य भंडार काट लेंगे, अपना काम करेंगे, फिर अपने भंडार के बाद, 'मास्टर' रेपो को पुल अनुरोध जारी करें। फिर सहकर्मी कोड समीक्षा हो सकती है और सफल पुल अनुरोध मुख्य भंडार में विलय हो सकते हैं।

यह बहुत अच्छी प्रैक्टिस को बढ़ावा देता है और इसका मतलब यह भी है कि आपके पास किसी भी एल्स सेवा पर बैक अप एक अच्छा साफ भंडार है।

हम (मेरे संगठन में) शायद इस तरह से 100 से अधिक परियोजनाएं चल रही हैं, कई भाषाओं में और यह बहुत अच्छी तरह से काम करती है।

इस आधार पर इसका उपयोग करके कुछ वर्कफ़्लो हैं। उचित अच्छी व्याख्या के लिए here पर एक नज़र डालें।

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