नए सर्वर पर पुश पुश / क्लोन


127

मैं सिर्फ Git सीख रहा हूं और कुछ ऐसा है जिससे मैं काम नहीं कर सकता। अपने मैक पर स्थानीय रूप से गिट रिपॉजिटरी बनाने और उपयोग करने के बाद, क्या मैं किसी अन्य सर्वर पर कॉपी को कहीं और धकेल सकता हूं? मैं एक फ़ायरवॉल के पीछे हूँ इसलिए दुर्भाग्य से मैं git cloneदूसरी मशीन से नहीं चल सकता।

जवाबों:


137
  1. git remote add नाम url
  2. git push नाम की शाखा

उदाहरण:

git remote add origin git@github.com:foo/bar.git
git push origin master

इसके लिए डॉक्स देखें git push- आप किसी शाखा के लिए डिफ़ॉल्ट रिमोट के रूप में रिमोट सेट कर सकते हैं; यदि आप नहीं करते हैं, तो नाम originविशेष है। बस git pushअकेले इस git push origin थ्रैन्च (आप जिस भी शाखा पर हों) के लिए वही करेंगे ।


7
"पुश क्लोनिंग" के रूप में केवल पुशिन्ह _ब्रांच_ के बजाय एक निकट प्रभाव के लिए : git push -u --allहम चूक कर सकते हैं originक्योंकि यह पुश करने के लिए डिफ़ॉल्ट मान लिया गया नाम है और -uदूरस्थ शाखाओं को भी ट्रैक करेगा।
cregox

13
उपयोग करने वाले सर्वर पर एक खाली नंगे भंडार को बनाने के लिए पर्याप्त होना चाहिए git init --bare /foo/bar.gitऔर फिर अपने स्थानीय को वहां धकेलना चाहिए (जैसे इस उत्तर में)। आपको सर्वर से zipped / tared के साथ कुछ भी स्थानांतरित करने की आवश्यकता नहीं है।
ओडरवेट

1
OderWat सुरक्षित है। उदाहरण के लिए, 'git init --bare foo / bar.git' को रिमोट में लॉग इन करते समय करें (यानी git@github.com) तो 'रिमोट ओरिजिन' में पुश करने के लिए एक गंतव्य होगा। जीथब उदाहरण के लिए, मुझे लगता है कि आप जीथब के रिपोजिटरी / वेब इंटरफेस को जोड़ सकते हैं और फिर "कमांड लाइन से मौजूदा रिपॉजिटरी को पुश करें" सलाह का पालन करें। जीथुब एक '-यू' की सलाह देता है ताकि ट्रैकिंग का संदर्भ दिया जा सके।
डेव एक्स

यह विधि विहित हो सकती है, लेकिन यह आज्ञाकारी है और यह कम प्रयोग करने योग्य बनाता है। मैं मुझे कुछ प्यार करता हूँ, लेकिन अच्छा आकाश यह कुछ यूआई मुद्दों है ..
रॉस रोजर्स

मैंने मूल प्रश्न में जोड़े गए "EDIT" पैराग्राफ को हटाने के लिए स्वतंत्रता ली, जिससे यह लग रहा था कि यह प्रक्रिया संदिग्ध थी। मुझे नहीं लगता कि यह है, और यह शायद एक प्रश्न के बजाय एक टिप्पणी होना चाहिए था वैसे भी संपादित करें।
अगस्त लिलियास

75

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

git clone --bare /path/to/repo /path/to/bare/repo.git  # don't forget the .git!

अब, टार / gzip या जो कुछ भी आपके पसंदीदा संग्रह उपकरण का उपयोग कर नई repo.git निर्देशिका को संग्रहित करें और फिर संग्रह को सर्वर पर कॉपी करें।

अपने सर्वर पर रेपो को अनारक्षित करें। फिर आपको अपने स्थानीय भंडार पर एक रिमोट सेट करना होगा:

git remote add repo-name user@host:/path/to/repo.git #this assumes you're using SSH

तब आप दूरस्थ रेपो से धक्का और खींच सकेंगे:

git push repo-name branch-name
git pull repo-name branch-name

4
क्या आप टिप्पणी को समझा सकते हैं "। फ़ोल्डर के अंत में .git जोड़ने में बिंदु कहां है? मुझे यह कब करना चाहिए? केवल एक सम्मेलन?
लुम्ब्रिक

5
".It" सिर्फ एक नंगे गिट रेपो की पहचान के लिए अनौपचारिक मानक है
ग्रांट लिम्बर्ग

3
मैं इस विचार का पालन नहीं कर रहा हूँ ... यह एक git सर्वर की स्थापना के पूरे उद्देश्य को नहीं तोड़ता है और वास्तव में इसे "ट्रांसफर / कॉपी / सिंक / बैकअप में चीजों को रखने" के बजाय zipping और किसी अन्य विधि का उपयोग करने के लिए करता है?
cregox

1
यह वही है जो मुझे चाहिए था, क्योंकि मूल रेपो एक ऐसे नेटवर्क पर था जिसकी नेटवर्क तक पहुंच नहीं थी, जहां मैं जिस सर्वर को अस्तित्व में धकेलना चाहता था। इसने मुझे रेपो को एक बॉक्स पर रखने की अनुमति दी, जिसमें पहुंच थी।
माइकेलवेल्वोफिश

3
@ आपको केवल एक बार रेपो को कॉपी / कॉपी / एक्सेप्ट करना होगा। उसके बाद आप सभी की जरूरत है धक्का और पुल है।
अतिरिक्त

9

git bundleयदि आप अपर्याप्त नेटवर्क उपलब्धता रखते हैं , तो रिपॉजिटरी को स्थानांतरित करने के कई तरीके हैं । चूँकि Git रिपॉजिटरी वास्तव में फाइलों से भरी एक निर्देशिका है, आप .gitजिस भी तरीके से आपको सबसे अच्छी लगती है , उस निर्देशिका की एक प्रतिलिपि बनाकर एक रिपॉजिटरी को "क्लोन" कर सकते हैं ।

सबसे कुशल तरीका कहीं बाहरी भंडार का उपयोग करना है ( गिटहब का उपयोग करें या गिटोसिस की स्थापना करें ), और फिर git push


7
remote server> cd /home/ec2-user
remote server> git init --bare --shared  test
add ssh pub key to remote server
local> git remote add aws ssh://ec2-user@<hostorip>:/home/ec2-user/dev/test
local> git push aws master

मुझे आपके उत्तर की सादगी पसंद है, लेकिन मुझे यकीन नहीं है कि मुझे इसकी आवश्यकता है या नहीं। मेरे पास GitHub पर एक मौजूदा GIT रेपो है, और अब हमारे Ubuntu सर्वर (जिसमें GIT स्थापित है) को लाइव फाइलों पर धकेलना चाहते हैं। क्या आप प्रक्रिया को स्पष्ट करने के लिए कुछ टिप्पणियां जोड़ सकते हैं?
डेव एवरिट

1

आप किसी शाखा को किसी दूरस्थ सर्वर पर धकेल सकते हैं, जीथब कह सकते हैं । आपको पहले प्रारंभिक प्रोजेक्ट सेटअप करना होगा, फिर अपनी परियोजना को क्लोन करना होगा और:

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