2010-10-08 17 views
16

मेरे पास मेरी स्थानीय मशीन पर एक मौजूदा गिट भंडार है। मैं अपने वेब सर्वर पर उस भंडार को स्थानांतरित करना चाहता हूं, फिर सर्वर से मेरा भंडार देखने के लिए मेरी स्थानीय मशीन पर git clone। मैं अपनी स्थानीय मशीन पर विकास करने और सर्वर पर अपडेट को धक्का देने की योजना बना रहा हूं। मैं अपनी स्थानीय मशीन से सर्वर पर एसएसएच कर सकता हूं, लेकिन इसके विपरीत नहीं। मुझे इस बारे में कैसे बर्ताव करना चाहिए? मुझे लगता है कि git bundle किसी भी तरह इस्तेमाल किया जाना चाहिए, हालांकि जब मैंने अपने सर्वर पर git clone मेरा बंडल करने की कोशिश की, तो मुझे "चेतावनी: रिमोट हेड को कोई भी रेफरी, चेकआउट करने में असमर्थ" त्रुटि मिली। मेरी स्थानीय मशीन ओएस एक्स चल रही है, सर्वर लिनक्स चला रहा है।गिट: मौजूदा भंडार को पीसी से सर्वर पर ले जाएं, सर्वर से क्लोन

उत्तर

29

लिनक्स सर्वर पर, एक नया निर्देशिका में कार्य करें:

git init --shared --bare 

तो अपने स्थानीय मशीन पर:

git remote add origin server:path/to/repo 
git push --all origin 

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

+0

'गिट पुश मूल मास्टर' करने पर, मुझे एक लंबी त्रुटि मिलती है जो "कुल 0 (डेल्टा 0), पुन: उपयोग 0 (डेल्टा 0) रिमोट: त्रुटि: चेक आउट शाखा को अपडेट करने से इंकार कर रही है: refs/head/मास्टर रिमोट: त्रुटि: डिफ़ॉल्ट रूप से, एक गैर-नंगे भंडार में वर्तमान शाखा को अपडेट करना "। लिनक्स सर्वर पर मेरे रेपो की एकमात्र सामग्री ".. .. हैइट शाखाएं कॉन्फ़िगरेशन विवरण हुक जानकारी ऑब्जेक्ट रेफरी" है, जो 'गिट इनिट - शेर - बेयर' कमांड बनाया गया है। मैं दोनों कंप्यूटरों पर गिट 1.7.1.1 का उपयोग कर रहा हूं। –

+0

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

+0

यह सिद्धांत रूप से ठीक काम करता है, लेकिन मुझे इसे काम करने के लिए कुछ अतिरिक्त कदमों की आवश्यकता है, क्योंकि मेरा सर्वर एक गैर-मानक एसएसएच पोर्ट चलाता है: ओएस एक्स पर। मैंने एसएसएच-पूछैप स्थापित करके शुरू किया (https://github.com/ markcarver/mac-ssh-askpass), तो मुझे एससीपी-शैली यूआरएल का उपयोग कर पोर्ट को ~/.ssh/config में कॉन्फ़िगर करना था (http://stackoverflow.com/a/5738592/217953 देखें)। – xgretsch

2

कैसे इस बारे में:

local> cd my_repo.git 
local> git remote add origin [email protected]:/path/to/my_repo.git 
local> git config branch.master.remote origin 
local> git config branch.master.merge refs/heads/master 
local> git push origin master 

अपने सर्वर पर अपने स्थानीय रेपो से डेटा भेज देंगे कि। फिर यह करें:

local> cd .. 
local> git clone [email protected]:/path/to/my_repo.git my_repo2.git 

तब आप सर्वर से क्लोन कर चुके होंगे। संतुष्ट होने पर, आप मूल रेपो से छुटकारा पा सकते हैं, और संभवतः दूसरे का नाम बदल सकते हैं।

9

"गिट पुश मूल मास्टर" के बजाय "गिट पुश - मूल उत्पत्ति" का उपयोग करें ताकि आप सभी शाखाओं पर जाएं और न केवल मास्टर शाखा।

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