मैं अपने स्थानीय रिपॉजिटरी को गिट-पुल के लिए कैसे उपलब्ध करा सकता हूं?


89

मेरे पास एक काम करने वाला प्रतिलिपि भंडार है जिसे मैं बिना किसी समस्या के काम कर रहा हूं; इस भंडार के लिए मूल GitHub पर है।

मैं अपनी वर्किंग कॉपी रिपॉजिटरी को अपनी बिल्ड मशीन (एक अन्य भौतिक होस्ट पर एक वीएम) के लिए मूल रूप में उपलब्ध कराना चाहता हूं, ताकि मुझे लगे कि मेरी काम करने वाली कॉपी को बनाया जा सकता है और निर्माण मशीन पर परीक्षण किया जा सकता है गिटहब पहले। मैं पहले से ही GitHub रिपॉजिटरी के लिए एक निर्माण कर रहा हूं, लेकिन मैं "गोल्डन" रिपॉजिटरी / बिल्ड बनना चाहता हूं; यानी, अगर कुछ अंदर जाता है, तो GitHub के खिलाफ निर्माण को पारित करने की गारंटी दी जानी चाहिए।

मैंने Git URL पर प्रलेखन को देखा है, और देखें कि फॉर्म में URL का उपयोग करने का विकल्प है git://host.xz[:port]/path/to/repo.git/(देखें, उदाहरण के लिए, git-clone प्रलेखन )। मैं इसे न्यूनतम संभव कॉन्फ़िगरेशन के साथ सबसे सरल तरीके से करना चाहता हूं: मुझे अपनी बिल्ड मशीन पर इसे प्रकाशित करने के लिए एसएसएच डेमॉन या वेब सर्वर स्थापित करने की आवश्यकता नहीं है।

मैं विंडोज 7 x64 आरसी चला रहा हूं, मेरे पास MSysGit और TortoiseGit स्थापित है, और मैंने फ़ायरवॉल पर Git का डिफ़ॉल्ट पोर्ट (9814) खोल दिया है। कृपया मान लें कि काम करने वाला प्रतिलिपि रेपो है D:\Visual Studio Projects\MyGitRepo, और होस्टनाम है devbox। बिल्ड मशीन विंडोज सर्वर 2008 x64 है। मैं संबंधित उत्पादन के साथ निर्माण मशीन पर निम्नलिखित कमांड की कोशिश कर रहा हूं:

D:\Integration>git clone "git://devbox/D:\Visual Studio Projects\MyGitRepo"
Initialized empty Git repository in D:/Integration/MyGitRepo/.git/
devbox[0: 192.168.0.2]: errno=No error
fatal: unable to connect a socket (No error)

क्या मैं कुछ भूल रहा हूँ?


क्या आप केवल स्थानीय रूप से एक हिस्सा सेटअप नहीं कर सकते हैं, और फिर अपने बिल्डमैचिन से 'git क्लोन \\ workmachine \ share' कर सकते हैं? सबसे अच्छा / सबसे प्रभावी तरीका नहीं है, लेकिन सबसे सरल बात है।
जोकिम एलोफसन

जवाबों:


133

खींचने के लिए एक भंडार स्थापित करने के लिए पाँच संभावनाएँ मौजूद हैं:

  • स्थानीय फाइल सिस्टम : git clone /path/to/repoया git clone file://path/to/repo। कम से कम यदि आपके पास फ़ाइल सिस्टम है, लेकिन नेटवर्क का बहुत कुशल उपयोग नहीं है। (यह जोकिम एलोफसन द्वारा प्रस्तावित लगभग सटीक समाधान है )
  • HTTP प्रोटोकॉल : git clone http://example.com/repo। आप की जरूरत है किसी भी वेब सर्वर, और आप भी चलाने के लिए (शायद स्वचालित रूप से, एक हुक से) की जरूरत है Git अद्यतन-server-जानकारी प्राप्त करने में कठिनाई के लिए आवश्यक जानकारी उत्पन्न करने के लिए / "गूंगा" प्रोटोकॉल के माध्यम से खींच रहा है।
  • एसएसएच : git clone ssh://example.com/srv/git/repoया git clone example.com:/srv/git/repo। आपको SSH सर्वर (SSH डेमॉन) को सेटअप करने की आवश्यकता है, और क्लाइंट पर SSH स्थापित किया है (जैसे MS Windows पर PuTTY)।
  • Git प्रोटोकॉल : git clone git://example.com/repo। आपको सर्वर पर गिट-डेमन चलाने की आवश्यकता है ; विवरण के लिए प्रलेखन देखें (आप इसे केवल लाने के लिए स्टैंडअलोन प्रक्रिया के रूप में चला सकते हैं, सेवा के रूप में आवश्यक नहीं चला सकते हैं)। git-daemon git का एक हिस्सा है।
  • बंडल : आप git-बंडल कमांड का उपयोग करके सर्वर पर बंडल उत्पन्न करते हैं , इसे किसी भी तरह से (यहां तक ​​कि USB के माध्यम से) ग्राहक मशीन में स्थानांतरित करते हैं, और क्लोन का उपयोग करके git clone file.bndl(यदि क्लोन काम नहीं करता है, तो आप "git init", "रिमोट रिमोट ऐड" कर सकते हैं) "और" गिट लाने ")।

क्या आप अपने उदाहरण में याद कर रहे हैं शायद सर्वर पर git-daemon चल रहा है। कि, या गलतफहमी git-daemon।

दुर्भाग्य से मैं एमएस विंडोज पर सेवा के रूप में गिट-डेमन चलाने में आपकी मदद नहीं कर सकता। हालांकि काम नहीं करने वाले गिट-डेमन के बारे में msysGit के अंतिम संस्करण की घोषणा में कुछ भी नहीं है।


ठीक है, इसलिए मुझे कुछ स्थापित करने या हर बार मैन्युअल रूप से एक बंडल पर कॉपी करने की आवश्यकता है (संभवतः इसे स्क्रिप्टिंग के माध्यम से, मुझे लगता है कि क्या पहले तीन विकल्पों के लिए गिट-डेमन की भी आवश्यकता है?
alastairs

1
केवल "गिट प्रोटोकॉल" विकल्प को सर्वर पर गिट-डेमन चलाने की आवश्यकता है। केवल "एसएसएच" और "एचटीटीपी" विकल्पों के लिए अतिरिक्त टूल की आवश्यकता होती है: या तो sshd (ssh सर्वर) या वेब सर्वर। बंडल समाधान मैनुअल समाधान है।
जकुब नारबस्की

हालांकि सवाल 'पुल' के बारे में था, पोस्टर को बाद में 'गिट पुश' चलाने से चेतावनी दी जानी चाहिए, क्योंकि जिस रिपॉजिटरी से वह क्लोनिंग कर रहा है वह नंगे है।
9

क्या आप इस बारे में विस्तार से बता सकते हैं,
११:०५ पर

1
स्थानीय फाइल सिस्टम विकल्प की कोशिश करने वाले किसी और को ध्यान दें: UNC पथ पर अग्रणी बैकस्लैश से बचने के लिए याद रखें! :-)
११'०

17

जकुब नारबस्की के उत्तरों के अलावा, एक और मार्ग है, जो आपके मूल प्रश्न के अनुरूप है। आप जैसे आमतौर पर करते हैं, वैसे ही आप गितुब से क्लोन कर सकते हैं, तब जब आप अपने स्थानीय रेपो से एक-तरफा प्रदर्शन करना चाहते हैं, तो बस यह करें:

git pull /path/to/repo master

(गुरु के बजाय आप किसी भी शाखा का नाम रख सकते हैं।)


एक छोटी सी टिप (या मुझे यह सवाल कैसे मिला): ..में <पथ / से / रेपो> काम नहीं करते; इसके बजाय एक पूर्ण पथ का उपयोग करें।
दिमित्री टिमोफ़ेव

1

Ssh मार्ग अच्छी तरह से काम करता है लेकिन इसके लिए एक दूरस्थ ssh सर्वर की आवश्यकता होती है। यदि आपके पास Windows प्लेटफ़ॉर्म है तो Cygwin एक वर्किंग ssh सर्वर प्रदान करता है जो Git के साथ काम करता है, लेकिन Cygwin Git का उपयोग करने पर मैन्युअल रूप से Git अपग्रेड करें (मैंने http://alecthegeek.wordpress.com/2009/01/21/top-tip पर कुछ संकेत लिखे थे । -ग्रुप-गिट-ऑन-साइबरविन / )।


1

मैंने हाल ही में वास्तविक फ़ाइल अपलोड करने के लिए साइटकॉपी का उपयोग करके खुद को HTTP सर्वर पर दोहराने के लिए अपनी एक git परियोजनाओं को बदल दिया है।

यह बहुत आसान है, बस git update-server-infoतब उपयोग करें। अपने सर्वर पर कुछ http-सुलभ निर्देशिका के लिए .it निर्देशिका को मिरर करें। मैंने 'प्रोजेक्ट.जीट' का इस्तेमाल किया, जो काफी सामान्य है।

Http: // साइट / प्रोजेक्ट- git पुल से एक विजेता की तरह काम करता है, और मुझे FTP एक्सेस के अलावा सर्वर पर कुछ भी करने की आवश्यकता नहीं है, हालांकि साइटकॉपी वेबदव को भी सपोर्ट करती है।

हालांकि, मैं सिटेकॉपी का उपयोग करने की सलाह नहीं देता, हालांकि, यह कई मशीनों को सिंक में अच्छी तरह से नहीं रखता है। मेरे प्रोजेक्ट के लिए, HTTP रिपॉजिटरी आसानी से है, और सोने का अपडेट सिर्फ एक मशीन से आता है, इसलिए यह काफी अच्छी तरह से काम करता है।


1

अगर आपके पास एक रास्ता है

C:\Project\

और आपने git initपहले ही किया था , इसलिए आपके पास एक फ़ोल्डर भी है

C:\Project\.git\

अब आप एक नया फ़ोल्डर बनाते हैं

C:\.git\

उस फ़ोल्डर में जाएं और चलाएं git clone --bare ..\Project( नंगे महत्वपूर्ण है),
अपने C:\Project\फ़ोल्डर पर वापस जाएं और ए करें git remote add-url local ..\.git\Project
अब तुम बस करो git add -A, git commit -m "HelloWorld"और git push local master

आप Projectफ़ोल्डर साझा कर सकते हैं , इसे कनेक्ट कर सकते हैं और कर सकते Z:हैं git clone Z:\Project- आप अभी उपयोग कर सकते हैं git pull origin masterऔर git push origin masterएक कंप्यूटर से दूसरे कंप्यूटर में परिवर्तनों को धक्का / खींच सकते हैं ।


0

यदि आपका दूरस्थ होस्ट समान विंडो नेटवर्क में है, अर्थात आप इसे \ रिमोटहोस्ट के रूप में एक्सेस कर सकते हैं, तो आप एक्सप्लोरर में नेटवर्क ड्राइव को मैप कर सकते हैं, मान लीजिए कि z: -> \ Remotehost \ repodir, इसके बाद आप 'git क्लोन' का उपयोग कर सकते हैं z / myproject 'क्लोन परियोजना के लिए

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.