2012-10-16 22 views
5

मुझे काम करने के लिए गिट सॉफ़्टवेयर का उपयोग करना पसंद है, लेकिन जिन लोगों का मैं उपयोग करता हूं (गिटबॉक्स, गिथब, सोर्सट्री) सभी स्थानीय रिपो के लिए एक नया रेपो जोड़ते समय पूछते हैं।क्या गिट सॉफ़्टवेयर (उदा। गिटबॉक्स, गिथब, सोर्सट्री) स्थानीय के बजाय रिमोट रेपो का उपयोग कर सकते हैं?

बात यह है कि मेरा रेपो मेरे विकास सर्वर पर है, न कि मेरी स्थानीय मशीन।

तो क्या गिट सॉफ़्टवेयर रिमोट गिट रेपो को विकास रेपो के रूप में उपयोग कर सकता है, फिर इसे अपने मुख्य रेपो (जैसे गिथब या बिटबकेट) पर दबाएं?

अन्यथा ऐसा लगता है कि आप सॉफ़्टवेयर का उपयोग नहीं कर सकते हैं और एसएसएच पर कमांड लाइन का सहारा लेना चाहते हैं।

धन्यवाद

+2

क्या आपकी स्थानीय मशीन पर संपादन के लिए फ़ाइलें हैं? यदि आपकी स्थानीय मशीन पर फ़ाइलें नहीं हैं तो आप कैसे विकास करते हैं? क्या आप रिमोट मशीन पर गिट जीयूआई चला सकते हैं और इसे "एसएसएच-एक्स" के साथ अपनी स्थानीय मशीन पर सुरंग कर सकते हैं? – JBCP

+1

मैं एक संपादक का उपयोग करता हूं जो एसएफटीपी (मैक के लिए कोडा) पर फ़ाइलों को संपादित करता है। इसलिए मुझे अपनी स्थानीय मशीन पर मेरी फाइलों की आवश्यकता नहीं है, या चाहिए। मैं विकसित करने के लिए कुछ मशीनों का उपयोग करता हूं इसलिए टी उन सभी पर MySQL/apache/php सेट करना और मेरी परियोजनाओं के लिए प्रत्येक पर एक रेपो सेट करना चाहते हैं, एक दुःस्वप्न बनें। तो मेरे पास एक विकास मशीन है जो सभी अन्य लोगों से पहुंच है। मुझे आश्चर्य है कि गिट सॉफ़्टवेयर दूरस्थ संस्करणों के साथ काम कर रहे संस्करण के रूप में सौदा नहीं कर सकता है। मुझे रिमोट पर गिट जीयूआई चलाने के बारे में पता नहीं है, मुझे संदेह है, मेरे पास एक्स या ऐसा कुछ भी नहीं है, यह सिर्फ एक सेंटोस वेब सर्वर है। –

उत्तर

6

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

ऐसा करने का एक और तरीका, मैं टिप्पणियों में लाना चाहता हूं, नेटवर्क सिस्टम सिस्टम को अपने विकास मशीन से अपने सर्वर पर निर्यात करना है। मैं ऐसा करता हूं ताकि मैं अपनी वर्तमान कामकाजी प्रतिलिपि को एक साथ कई मशीनों पर माउंट कर सकूं, और यह भी कि जब भी मैं सर्वर से कनेक्ट नहीं हूं तब भी मेरे पास मेरी स्थानीय कामकाजी प्रतिलिपि होगी।

आप लिखें:

मैं हैरान Git सॉफ्टवेयर काम कर रहे संस्करण के रूप में दूरदराज के रेपोस के साथ सौदा नहीं कर सकते हैं।

अधिकांश गिट जीयूआई git कमांड पर कॉल करके अपने कुछ काम करते हैं। रिमोट ऑपरेशन का समर्थन करने के लिए, कोर गिट को भी करना होगा। यह सी और शेल स्क्रिप्ट के मिश्रण में लिखा गया है; उन सभी को रिमोट फाइलों से निपटने के लिए फिर से लिखा जाना होगा।

एक टेक्स्ट एडिटर में बहुत आसान काम है; जब आप इसे खोलते हैं तो यह एक फ़ाइल पढ़ता है, और जब आप सहेजते हैं तो लिखते हैं, जबकि गिट commit जैसे एकल ऑपरेशन के दौरान कई फाइलें पढ़ता और लिखता है।

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

+0

यदि गिट सॉफ़्टवेयर मेरे विकास संस्करण के लिए रिमोट रेपो से निपट नहीं सकता है तो यह एक अच्छा विकल्प की तरह लगता है, रिमोट को नेटवर्क ड्राइव के रूप में जोड़ना। उसमें देखेंगे। धन्यवाद। –

+0

@LaurenceCope मैं अनुमान लगा रहा हूं कि अधिकांश गिट फ्रंटेंड दूरस्थ रूप से संचालित नहीं हो सकते हैं, लेकिन मुझे उनमें से अधिकांश के साथ अनुभव नहीं है। दरअसल, मैं इसे विपरीत तरीके से करता हूं; मेरी स्थानीय डिस्क पर विकास निर्देशिका को उन सर्वरों पर निर्यात करें जिन पर मैं परीक्षण कर रहा हूं। मैं इस उद्देश्य के लिए एसएमबी का उपयोग करता हूं क्योंकि मैं इसे पहले से ही अन्य कारणों से उपयोग कर रहा हूं, लेकिन किसी भी नेटवर्क फाइल सिस्टम को काम करना चाहिए। –

+2

अद्यतन: ऐसा लगता है कि रिमोट एक sshfs ड्राइव पर आरोहित होने पर गिटहब और गिटबॉक्स .git फ़ाइलों को "देख" नहीं सकते हैं। मुझे कोई स्थिति नहीं मिल रही है, या रेपो के बारे में कोई जानकारी नहीं है :(। मैं फाइंडर ओके में .git फ़ाइलों को देख सकता हूं। –

0

मुझे अपने लिए एक आसान तरीका मिला: ट्रांसमिट (एफ़टीपी क्लाइंट) में 'डिस्क के रूप में पसंदीदा माउंट' का विकल्प है। SourceTree इस 'वर्चुअल' डिस्क के साथ अपेक्षित काम कर सकता है।

हालांकि एक सीमा: आप डिस्क को माउंट कर सकते हैं और केवल कोड में बदलकर और प्रतिबद्ध/पुश करने के लिए तैयार होने के बाद SourceTree शुरू कर सकते हैं, यदि आप कोड पर काम करते समय SourceTree और ssh डिस्क को घुमाते हैं तो यह काम नहीं करेगा। कुछ कारणों से ट्रांसमिट द्वारा आरोपित डिस्क फ़ाइलों की सामग्री को अद्यतन नहीं करती है, लेकिन केवल अनमाउंट/माउंट कार्रवाई के बाद।

+0

मेरे पास पहले से ही कोशिश करने के लिए मेरे डेस्कटॉप पर Transmit.app है! मैं इसे जाने दूंगा। धन्यवाद। –

2

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

आप जो करना चाहते हैं वह स्थानीय गिट रिपोज़ है जो आपके एकीकरण सर्वर (जो वास्तव में कोड चलाता है) को कोड धक्का देता है। यह तैनाती की तरह है, केवल आप उत्पादन के बजाय एक परीक्षण सर्वर पर तैनात हैं।

यह आम तौर पर साझा किए गए एक साझा गिट भंडार के द्वारा प्राप्त किया जाता है। यह रेपो should be bare। बेयर साझा रेपो के अलावा, आप साझा गिट रेपो का एक गैर-नंगे क्लोन चाहते हैं जो आपके अपाचे डॉक्रूट के रूप में कार्य करेगा।

जब साझा रेपो को कोई प्रतिबद्धता प्राप्त होती है, तो यह डॉक्रूट रेपो को git pull निष्पादित करेगा।

साझा रेपो पर post-receive hooks का उपयोग कर इसे प्राप्त किया जा सकता है।

डॉक्रूट रेपो एक विशिष्ट शाखा पर चेक आउट किया गया है (मान लें develop)। तो यदि आप अन्य शाखाओं को सामान देते हैं और उन्हें धक्का देते हैं, तो सर्वर प्रभावित नहीं होगा।

यह आपको कई परिनियोजन भंडार सेट करने की अनुमति देता है, इसलिए आप उन लोगों में से एक के साथ जुड़े एक और शाखा prod प्राप्त कर सकते हैं जो वास्तव में उत्पादन कोड अपडेट करते समय उत्पादन कोड अपडेट करते हैं।

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

This article विस्तार से चला जाता है कि यह सब कैसे सेट करें। मैंने इसे पहले किया है, यह अच्छी तरह से काम करता है।

+0

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

+0

मैंने कॉन्फ़िगरेशन में वर्णित, आपको स्थानीय सर्वर की आवश्यकता नहीं है। आपके पास एक साझा सर्वर होगा, लेकिन एसएफटीपी के माध्यम से इसमें फ़ाइलों को संपादित करने के बजाय, आप प्रतिबद्ध और धक्का देते हैं। साझा गिट रेपो फ़ाइलों को साझा वेब सर्वर पर ले जाने का ख्याल रखेगा। –

0

मुझे एक साल पहले इस सटीक समस्या थी - दुर्भाग्य से मुझे कोई संगत, विश्वसनीय उत्तर नहीं मिला। मैंने हफ्तों तक गुस्सा किया, सोच रहा था कि यह मेरी खोज शब्द थी जो सफल नहीं थी - हर तरह से कोशिश कर रही थी।

[हमारे द्वारा स्थापित किया गया था प्रत्येक डेवलपर का अपना स्वयं का देव सर्वर था - उन्हें मशीनों से अलग रखने का मतलब था कि साइट कहीं भी विकसित की जा सकती है, देव सर्वर को लाइव वातावरण के समान ही स्थापित किया जा सकता है और sysadmin उन्हें अपग्रेड और बैक अप रखें - मैं पूरी तरह से काम करने वाली मशीन के लिए एक अलग विकास सर्वर होने का लाभ देखता हूं, कुछ डाउनसाइड्स में कोई गिट ऐप नहीं है!]

जो कुछ भी आपके कंप्यूटर पर फ़ाइल माउंट या स्पूफिंग पर निर्भर करता है रिमोट ड्राइव सोचना स्थानीय फ़ाइल ब्राउज़िंग के लिए स्थानीय है, लेकिन जब कनेक्शन अस्थायी होता है तो गिट ऐप्स फ्लेक हो जाते हैं। अन्य बार आपको एक निश्चित तरीके से चीजों को करना है, बस git status

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

मैं होने के लिए उन कमांड लाइन से एक बेहतर है स्टैक ओवरफ़्लो answerers नफरत है, लेकिन इस स्थिति में मैं कुछ भी है कि था खरोंच करने के लिए, कई डेवलपर्स द्वारा पूरे दिन हर दिन के लिए इस्तेमाल किया जा करने के लिए नहीं मिल सका।

मैं उस समय भी इसके खिलाफ था, मैं सुंदर यूआई का उपयोग करना आसान बनाता हूं लेकिन कमांड लाइन & गिट सीखने के बाद से, मैंने कभी पीछे नहीं देखा है। घर पर अपनी परियोजनाएं शुरू करते समय मुझे अपने आप को किसी भी ऐप पर टर्मिनल का उपयोग करना पड़ता है क्योंकि मुझे लगता है कि उनमें से कई भ्रमित हैं!

यह न केवल आपके कमांड लाइन आत्मविश्वास से मदद करता है, लेकिन टर्मिनल का उपयोग करने के बाद से मेरा गिट ज्ञान दस गुना सुधार हुआ है, क्योंकि ऐप्स अक्सर कई घटनाओं को छुपाते हैं।

+0

मुझे टर्मिनल में गिट कमांड का उपयोग करना पसंद है, लेकिन कंसोल में लॉग/प्रतिबद्ध/diff की जांच करना विजुअल टूल्स में बहुत बेहतर है (गिट एक्सटेंशन, तुलना से परे) – VitalyB