Git / GitHub मास्टर को धक्का नहीं दे सकता


151

मैं Git / GitHub में नया हूं और एक मुद्दे में भाग गया हूं। मैंने एक परीक्षण परियोजना बनाई और इसे स्थानीय भंडार में जोड़ा। अब मैं दूरस्थ रिपॉजिटरी में फाइलें / परियोजना जोड़ने की कोशिश कर रहा हूं।

यहाँ मैंने क्या किया (और यह काम किया) -

git remote add origin git://github.com/my_user_name/my_repo.git

अब जब मैं GitHub को रिपॉजिटरी पुश करने की कोशिश करता हूं, तो निम्न कमांड का उपयोग करके, मुझे निम्न त्रुटि मिलती है -

git push origin master

त्रुटि -

fatal: remote error:
You can't push to git://github.com/my_user_name/my_repo.git
Use git@github.com:my_user_name/my_repo.git

सभी github पृष्ठों के नीचे एक हेल्प लिंक ( help.github.com ) है। सहायता इस एक सहित कई विषयों का वर्णन करती है। मैं उन्हें पढ़ने और फिर उन विशिष्ट चीजों के बारे में प्रश्न पूछने का सुझाव दूंगा जिन्हें आप नहीं समझते हैं।
जामसेन

21
यदि जामेसन ने मदद पृष्ठों में किसी विशिष्ट स्थान की ओर इशारा किया होता, तो वह अधिक उपयोगी होता।
डेवोनो जूल

जवाबों:


244

GitHub Git प्रोटोकॉल पर धकेलने का समर्थन नहीं करता है, जो कि URL शुरुआत के आपके उपयोग द्वारा इंगित किया गया है git://। जैसा कि त्रुटि संदेश कहता है, यदि आप पुश करना चाहते हैं, तो आपको उस URL का उपयोग करके SSH URL git@github.com:my_user_name/my_repo.gitया "स्मार्ट HTTP" प्रोटोकॉल का उपयोग करना चाहिए https://जो GitHub आपको अपने रिपॉजिटरी के लिए दिखाता है।

(अपडेट: मेरे आश्चर्य के लिए, कुछ लोगों ने स्पष्ट रूप से सोचा था कि इसके द्वारा मैं सुझाव दे रहा था कि "https" का अर्थ "स्मार्ट HTTP" है, जो कि मैं नहीं था। Git में "गूंगा HTTP" प्रोटोकॉल हुआ करता था जो पहले धकेलने की अनुमति नहीं देता था। "स्मार्ट HTTP" जिसे GitHub का उपयोग किया गया था - या तो इस्तेमाल किया जा सकता था httpया httpsGit द्वारा उपयोग किए जाने वाले स्थानांतरण प्रोटोकॉल के बीच अंतर नीचे दिए गए लिंक में समझाया गया है।)

यदि आप मूल URL बदलना चाहते हैं, तो आप कर सकते हैं:

git remote set-url origin git@github.com:my_user_name/my_repo.git

या

git remote set-url origin https://github.com/my_user_name/my_repo.git

अधिक जानकारी 10.6 Git Internals - Transfer Protocol में उपलब्ध है


इसलिए मैंने URL बदल दिया और पुश वापस ले लिया, अब यह त्रुटि प्राप्त करें - ERROR: my_user_name / my_repo.git मौजूद नहीं है। क्या आपने इसे सही ढंग से दर्ज किया है? घातक: रिमोट अंत अप्रत्याशित रूप से लटका हुआ
kapso

क्या आपने जो URL सेट किया है, वह निश्चित रूप से GitHub पर आपकी रिपॉजिटरी के लिए पेज से कॉपी-और-पेस्ट कर सकता है? (यह संवेदनशील, आकस्मिक रूप से मामला है।)
मार्क लॉन्गेयर

1
ठीक है, ठीक है कि आपको इसे पुश करने से पहले गिटहब पर रिपॉजिटरी बनाना होगा - जब आप ऐसा करते हैं, तो यह आपको निर्देश देगा कि रिपॉजिटरी को क्लोन या पुश कैसे करें।
मार्क लोंगेयर

1
मुझे बस यही समस्या थी। वास्तव में समस्या यह थी कि आपके पास github.com और आपके उपयोगकर्ता नाम के बीच स्लैश "/" सही है। और यह एक बृहदान्त्र ":" होना चाहिए। यह समस्या है: डी
विल्मर ई। हेनो

2
@WilmerEHenaoH: यह आपकी समस्या हो सकती है , लेकिन यह प्रश्न में या मेरे उत्तर में समस्या नहीं थी;) (रुचि के लिए, कभी-कभी git में SSH URL की दो शैलियों पर भ्रम होता है , जिनमें से एक का उपयोग करता है) मेजबाननाम और पथ को अलग करने के लिए एक बृहदान्त्र और जो अन्य नहीं है।)
मार्क लॉन्गेयर

37

मार्क लॉन्गेयर के उत्तर का उपयोग करें , लेकिन संग्रह के लिए HTTPS लिंक का उपयोग करना सुनिश्चित करें:

git remote set-url origin https://github.com/my_user_name/my_repo.git

आप तब उपयोग कर सकते हैं git push origin master


1
इससे मेरा काम बनता है। फिर बस टाइप git pushभी काम करता है।
युवा

13

मार्क लॉन्गेयर के समाधान का उपयोग git remote set-url...करना काफी स्पष्ट है। .Git / config फ़ाइल के इस अनुभाग को सीधे संपादित करके आप समान व्यवहार भी प्राप्त कर सकते हैं:

इससे पहले:

[remote "origin"]
    fetch = +refs/heads/*:refs/remotes/origin/*
    url = git://github.com/my_user_name/my_repo.git

उपरांत:

[remote "origin"]
    fetch = +refs/heads/*:refs/remotes/origin/*
    url = git@github.com:my_user_name/my_repo.git

(और इसके विपरीत, git remote set-url...आह्वान उपरोक्त परिवर्तन का उत्पादन करता है।)


2

किसी व्यक्ति के लिए इसका एक सरल समाधान है:

अपने स्थानीय .it निर्देशिका में कॉन्फ़िगरेशन फ़ाइल को संपादित करें ( config)। बदलें git:करने के लिए https:नीचे दिए गए।

[remote "origin"]
    url = https://github.com/your_username/your_repo

1
गलत, https प्रोटोकॉल पुश करने की अनुमति नहीं देगा। देखें: "प्रो गिट" पुस्तक, खंड 4.1.4 "HTTP / S प्रोटोकॉल"। लिंक: git-scm.com/book/en/v2
केविन जे। चावल

@ केविनजे.राइस: उह, यह कहां कहता है ? जीथब स्मार्ट एचटीटीपी प्रोटोकॉल का उपयोग करता है और जो सिर्फ ठीक करने के लिए पुश की अनुमति देता है
मार्टिन पीटर्स

1

Git क्लाइंट को अपग्रेड करने के बाद मेरे पास यह समस्या थी , और अचानक मेरी रिपॉजिटरी पुश नहीं कर सकी।

मैंने पाया कि कुछ पुराने रिमोट का गलत मूल्य था url, यहां तक ​​कि मेरे वर्तमान में सक्रिय रिमोट के लिए भी समान मूल्य urlथा और ठीक काम कर रहा था।

लेकिन इसमें pushurlपरम भी था , इसलिए इसे पुराने रिमोट के लिए जोड़कर मेरे लिए काम किया:

इससे पहले:

[remote "origin"]
    url = git://github.com/user/repo.git
    fetch = +refs/heads/*:refs/remotes/origin/*
    pushurl = git@github.com:user/repo.git

नोट: फ़ाइल "कॉन्फिगर" का यह हिस्सा उम्र के लिए अप्रयुक्त था, लेकिन नए क्लाइंट ने गलत URL के बारे में शिकायत की थी:

[remote "composer"]
    url = git://github.com/user/repo.git
    fetch = +refs/heads/*:refs/remotes/composer/*

इसलिए मैंने pushurlपरम को पुराने रिमोट से जोड़ा :

[remote "composer"]
    url = git://github.com/user/repo.git
    fetch = +refs/heads/*:refs/remotes/composer/*
    pushurl = git@github.com:user/repo.git

1

यह त्रुटि तब होती है जब आप किसी कॉल का उपयोग करके रेपो क्लोन करते हैं:

git clone git://github.com/....git

यह अनिवार्य रूप से आपको एक पुल-ओनली उपयोगकर्ता के रूप में स्थापित करता है, जो बदलावों को आगे नहीं बढ़ा सकता है।

मैंने अपनी रेपो .git/configफाइल खोलकर और लाइन बदलकर इसे ठीक किया:

[remote "origin"]
    url = git://github.com/myusername/myrepo.git

सेवा:

[remote "origin"]
    url = ssh+git://git@github.com/myusername/myrepo.git

उपयोगकर्ता के ssh+gitसाथ यह प्रोटोकॉल gitGithub द्वारा पसंद किया गया प्रमाणीकरण तंत्र है।

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


0

यदि आप http://github.com/my_user_name/my_repo पर जाते हैं, तो आपको एक टेक्स्टबॉक्स दिखाई देगा, जहाँ आप अपने रिपॉजिटरी में गिट पथ का चयन कर सकते हैं। आप इस का उपयोग करना चाहते हैं!


0

मैंने अपने पब को github.com में जोड़ा और यह सफल रहा:

ssh -T git@github.com

लेकिन मैंने गलत तरीके से ऐसा करने के बाद "आप धक्का नहीं दे सकते" प्राप्त किया:

git clone git://github.com/mygithubacct/dotfiles.git
git remote add origin git@github.com:mygithubacct/dotfiles.git
...edit/add/commit
git push origin master

मुझे जो करना चाहिए था करने के बजाय:

mkdir dotfiles
cd dotfiles
git init
git remote add origin git@github.com:mygithubacct/dotfiles.git
git pull origin master
...edit/add/commit
git push origin master

0

इसके httpsबजाय विश्व स्तर पर सेट करने के लिए git://:

git config --global url.https://github.com/.insteadOf git://github.com/


-1

सबसे तेज़ तरीका यह है originकि यह जो सुझाव देता है, उसे बदलना है।

इसके बजाय git push origin master, उपयोग करें:

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