मैं Git के साथ दूरस्थ रिपॉजिटरी के लिए प्रारंभिक धक्का कैसे करूं?


173

मैंने अनगिनत ट्यूटोरियल्स के माध्यम से पढ़ा है और मैं कम आता रहता हूँ। यहाँ मुझे क्या मिला है:

- मैं अपने विंडोज डेस्कटॉप पर RubyMine चला रहा हूं
- मैंने उनके निर्देशों के अनुसार अपने WebFaction होस्टिंग खाते पर Git स्थापित किया है
- Git दोनों मशीनों पर ठीक काम करता प्रतीत होता है

यहाँ मैं क्या कर रहा हूँ:
1. सर्वर पर:
         a। mkdir प्रोजेक्ट
         b। git init
         c। जोड़ देना।
         घ। git प्रतिबद्ध <--- "कुछ नहीं करने के लिए"
2. ग्राहक पर:
         a। RubyMine में नया प्रोजेक्ट बनाएं।
         ख। प्रोजेक्ट
         सी की शीर्ष निर्देशिका में "गिट इनिट" । सर्वर में "पुश परिवर्तन" <---- "कुछ refs को पुश करने में विफल रहा ..."।

मुझे क्या कदम याद आ रहे हैं?

जवाबों:


393

सर्वर पर:

mkdir my_project.git
cd my_project.git
git --bare init

ग्राहक पर:

mkdir my_project
cd my_project
touch .gitignore
git init
git add .
git commit -m "Initial commit"
git remote add origin youruser@yourserver.com:/path/to/my_project.git
git push origin master

ध्यान दें कि जब आप मूल जोड़ते हैं, तो कई प्रारूप और स्कीमा हैं जिनका आप उपयोग कर सकते हैं। मैं आपको यह देखने की सलाह देता हूं कि आपकी होस्टिंग सेवा क्या प्रदान करती है।


केवल एक चीज जो मैंने बदली, जब से मैं रूबीमाइन से बाहर काम कर रहा हूं, वह यह है कि मैंने टच को बदल दिया है। अपने 66 डिफ़ॉल्ट फाइलों के साथ एक रेल परियोजना बनाने के साथ .ignignore। आपका बहुत बहुत धन्यवाद!
डोनाल्ड ह्यूजेस

आदेशों को सूचीबद्ध करने के लिए यश। इस प्रकार मैंने दूरस्थ रिपॉजिटरी भी स्थापित की हैं।
डेव बाकर

5
मुझे यह जोड़ना चाहिए कि यदि आप चाहते हैं कि अन्य लोग इस रेपो पर आपके साथ सहयोग करें, तो आपको कमांड --sharedके अंत में जोड़ना चाहिए git --bare init। यह आवश्यक अनुमतियों को सेटअप करेगा।
जोश लिंडसे

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

21
मुझे पहली बार के git push --set-upstream origin masterबजाय दौड़ना पसंद है git push origin master। यह मैं सिर्फ टाइप करने के लिए अनुमति देता है git pushया git pullके बजाय git push origin masterहर बार। आपकी प्राथमिकताएँ जो भी हों।
रिक स्मिथ

8

आप यह कोशिश कर सकते हैं:

सर्वर पर:

नए समूह को जोड़ना /etc/group(उदाहरण के लिए)

mygroup:1001:michael,nir

नया गिट रिपोजिटरी बनाएं:

mkdir /srv/git
cd /srv/git
mkdir project_dir
cd project_dir
git --bare init (initial git repository )
chgrp -R mygroup objects/ refs/ (change owner of directory )
chmod -R g+w objects/ refs/ (give permission write)

ग्राहक पर:

mkdir my_project
cd my_project
touch .gitignore
git init
git add .
git commit -m "Initial commit"
git remote add origin youruser@yourserver.com:/path/to/my_project.git
git push origin master

(ग्राहक पक्ष के लिए धन्यवाद जोश लिंडसे)

क्लाइंट के बाद, सर्वर पर यह कमांड करें:

cd /srv/git/project_dir
chmod -R g+w objects/ refs/

अगर यह त्रुटि गिट पुल के बाद मिली:

There is no tracking information for the current branch. Please specify which branch you want to merge with. See git-pull(1) for details

git pull <remote> <branch>
If you wish to set tracking information for this branch you can do so with:

git branch --set-upstream new origin/<branch>

प्रयत्न:

git push -u origin master

इस से मदद मिलेगी।


5

कमिट करने से पहले आपको रिपॉजिटरी में कम से कम एक फाइल को जोड़ना होगा , जैसे .gitignore


मुझे लगता है कि जिस तरह से मैं इसका उपयोग करने की कोशिश कर रहा हूं वह मेरे क्लाइंट से शुरू में फाइलें जोड़ने के लिए है, क्योंकि मैं कोड लिखता हूं। क्या यह वैचारिक रूप से जगह से बाहर है? क्या मुझे पहले क्लाइंट पर कमिट करना है और फिर सर्वर पर पुश करना है?
डोनाल्ड ह्यूजेस

5

यदि आपकी परियोजना में एक अपस्ट्रीम शाखा नहीं है, तो यह है कि यदि यह पहली बार है तो दूरस्थ रिपॉजिटरी आपके स्थानीय भंडार में बनाई गई शाखा के बारे में जानने वाली है जो निम्नलिखित कमांड को काम करना चाहिए।

git push --set-upstream origin <branch-name>

3

@ जोश लिंडसे ने पहले से ही पूरी तरह से ठीक जवाब दिया। लेकिन मैं कुछ जानकारी जोड़ना चाहता हूं क्योंकि मैं अक्सर ssh का उपयोग करता हूं।

इसलिए बस बदलें:

git remote add origin youruser@yourserver.com:/path/to/my_project.git

सेवा:

git remote add origin ssh://youruser@yourserver.com/path/to/my_project

ध्यान दें कि डोमेन और पथ के बीच का कोलोन अब नहीं है।


1

आपको अपने ग्राहक पर दूरस्थ रिपॉजिटरी स्थापित करने की आवश्यकता है:

git remote add origin ssh://myserver.com/path/to/project

मैंने उस आदेश को चलाया, लेकिन "जीआईटी पुश ओरिजिनल मास्टर" का परिणाम अभी भी "कुछ रिफ्स को पुश करने में विफल" रहा। मैंने एक "गिट पुल ओरिजिनल मास्टर" करने की कोशिश की और एक "दूरस्थ रेफरी मास्टर नहीं पा सका"।
डोनाल्ड ह्यूजेस

मुझे यकीन नहीं है कि इससे कोई फर्क पड़ता है, लेकिन मेरे रिमोट रिपॉजिटरी git --bare init@Josh Lindsey के साथ बनाए गए हैं ।
डेव बैचर

मैं एक ही मुद्दा था "कुछ रेफरी पुश करने में विफल" ... रेपो से मास्टर शाखा को एक मैं पुश करने की कोशिश कर रहा हूं ... तो मैंने देखा कि स्रोत के पास मास्टर शाखा नहीं है - सुनिश्चित करें कि आप जिस शाखा की कोशिश कर रहे हैं पुश करने के लिए मौजूद है :)
डेटम गीक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.