गलत उपयोगकर्ता के रूप में दूरस्थ GitHub रिपॉजिटरी को धक्का दें


82

मेरे पास एक कार्य GitHub खाता और एक व्यक्तिगत एक है। पहले मैंने परीक्षण परियोजनाओं के लिए व्यक्तिगत एक का उपयोग किया, फिर मैं आगे बढ़ा और उसी कंप्यूटर पर दूसरे खाते के साथ एक भंडार किया।

अब मैं फिर से अपने व्यक्तिगत खाते पर एक नया भंडार बनाना चाहता था, मैंने वैश्विक और स्थानीय परिवर्तन किया user.name, और एक नया ssh कुंजी जोड़ा, GitHub सेटअप पेज में दर्ज किया। फिर मैंने डायरेक्टरी सेट की

git init
git remote add origin <url>
git push origin

लेकिन अब मुझे बताता है

त्रुटि: व्यक्तिगत / newrepo.git को अनुमति से इनकार कर दिया

मुझे नहीं पता कि दूसरा खाता इस से कैसे जुड़ा है। .git/configकोई workusernameसंबंधित चीजें नहीं दिखाता है ।

यदि आप विंडोज 10 का उपयोग कर रहे हैं तो राजन के उत्तर को पढ़ने के लिए अपना समय लें।


1
विंडोज 10 के लिए, नीचे उत्तर दें। क्रेडेंशियल प्रबंधक से क्रेडेंशियल्स निकालें। 2 घंटे का समय बर्बाद किया।
xenteros

@xenteros कृपया इसे उत्तर के रूप में पोस्ट करें। मैंने 1h खो दिया है और आपने मुझे 1h बचा लिया है।
lexicore

जवाबों:


76

यह मेरे वर्तमान कार्य के समान है। ऐसा लगता है कि आपने पहले से ही अपना अलग सेट कर लिया है, ssh-keysइसलिए आपको एक ~/.ssh/configफ़ाइल बनाने और इसे इसी तरह से जानकारी के साथ पॉप्युलेट करने की आवश्यकता है :

Host work.github.com
    HostName github.com
    User WORK_GITHUB_USERNAME
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/id_work_rsa
    IdentitiesOnly yes

Host personal.github.com
    HostName github.com
    User PERSONAL_GITHUB_USERNAME 
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/id_personal_rsa
    IdentitiesOnly yes

हर संपत्ति बहुत आत्म व्याख्यात्मक लगता है, लेकिन IdentitiesOnlyएक। मैं यह समझाने की कोशिश नहीं करूंगा कि यह किस लिए है, लेकिन यह मेरे वर्तमान सेटअप में है और ठीक काम करता है।

यह भी ध्यान देने योग्य है कि Host URLसही उपयोगकर्ता सेटिंग्स को हथियाने के लिए सिर्फ एक पॉइंटर है और आपके लक्ष्य HostNameयूआरएल के लिए फ़ाइलों को सही तरीके से प्राप्त करने पर कोई प्रभाव नहीं पड़ता है ।

अब आपको केवल यह सुनिश्चित करने की आवश्यकता है कि आपका origin(या remoteसामान्य रूप से कोई भी ) url Hostआपके संबंधित नाम में आपके उपयोगकर्ता नाम के आधार पर सही url से मेल खाता है । यदि आपके पास पहले से मौजूद व्यक्तिगत रिपॉजिट हैं, तो आप उस रेपो की .git/configफाइल को अपने टेक्स्ट एडिटर में एडिट कर सकते हैं :

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

या इसे कमांड लाइन के माध्यम से करें:

git remote set-url origin git@personal.github.com:PERSONAL_GITHUB_USERNAME/project.git

इसी तरह अपने काम करने के लिए एक:

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

या फिर, कमांड लाइन के माध्यम से:

git remote set-url origin git@work.github.com:your_work_organization/project.git

बेशक, आप हमेशा की तरह Hostअपनी ~/.ssh/configफ़ाइल में अपना एक यूआरएल सेट कर सकते हैं

Host github.com

मैं केवल work.github.comविन्यास संबंधों को आसान देखता था।

एक बार ये सभी सेट हो जाने के बाद, आपको प्रत्येक संबंधित रिमोट को पुश करने में सक्षम होना चाहिए।

संपादित करें

ध्यान देने वाली एक बात जो मुझे अभी पता चली है वह यह है कि यदि आपने कभी अपने user.emailमूल्य के लिए वैश्विक git config मान निर्धारित किया है (और मैं अनुमान लगा रहा हूं कि user.nameएक अलग मूल्य भी भेजेगा), git आपके ईमेल उपयोगकर्ता के रूप में आपके कमिट दिखाएगा। इसके आस-पास जाने के लिए, आप अपने स्थानीय रिपॉजिटरी के भीतर वैश्विक git config सेटिंग्स को ओवरराइड कर सकते हैं:

$ git config user.name "John Doe"
$ git config user.email johndoe@example.com

यह अब उस रेपो के लिए सही उपयोगकर्ता के रूप में भेजना चाहिए।


3
एक जादू की तरह काम करता है। धन्यवाद!
नॉर्थब्रिज

1
यह साइट बताती है कि ssh config फाइल पूरी तरह से रुचि रखने वाले किसी भी व्यक्ति के लिए है।
फिल

3
सुनिश्चित करने के लिए सबसे उपयोगी उत्तर। बहुत बहुत धन्यवाद।
limp_chimp

प्रतिभाशाली! बहुत बहुत धन्यवाद!
फिडो

1
कुंजी जो मुझे याद आ रही थी वह .IT / config में ssh होस्ट को निर्दिष्ट कर रही थी - बहुत बहुत धन्यवाद!
xdotcommer

46

कंट्रोल पैनल> यूजर अकाउंट्स> क्रेडेंशियल मैनेजर> जेनेरिक क्रेडेंशियल्स पर जाएं

गिट क्रेडेंशियल्स निकालें। फिर गिट पुश रन करें। यह गिट क्रेडेंशियल्स के लिए पूछने के लिए संकेत देगा। अपनी सही साख दर्ज करें।


3
इसने विंडोज 10 में गिट बैश को चलाने के दौरान मेरे मुद्दे को हल किया। धन्यवाद @ राजन-पाटिल
suspicious_williams

उन लोगों के लिए जिनके पास अंग्रेजी में विंडोज़ GUI नहीं है, आप control /name Microsoft.CredentialManagerकमांड लाइन पर टाइप करके क्रेडेंशियल मैनेजर तक पहुँच सकते हैं
bgusach

अजीब है, लेकिन यह केवल तभी काम करता है जब मैं गिट बैश शुरू कर रहा हूं (जैसा कि ऊपर उल्लेख किया गया है) लेकिन अगर मैं उसी टर्मिनल का उपयोग करना जारी रखता हूं जिसे मैंने त्रुटि केgit push साथ शुरू किया था - यह टर्मिनल के पुनरारंभ होने के बाद भी हर समय समान त्रुटियों को फेंकता रहता है। लेकिन धन्यवाद, वैसे भी - यह अंत में मुझे बहुत समय बचा
Kostyantyn Didenko

यह निश्चित रूप से सबसे अच्छा जवाब है जो मुझे आया है। बाकी सभी जटिल थे लेकिन यह सरल और सटीक था।
क्लोडेकेनिलोल

यह ONCE का काम करता है। जब आप खातों को फिर से जोड़ते हैं, तो वही समस्या बनी रहती है।
मेगाकोरश

38

आप ssh के बजाय केवल https पर भी स्विच कर सकते हैं। यदि आप https का उपयोग करते हैं, तो यह .it / config सेटिंग्स का सम्मान करेगा। इसलिए, .git / config में, परिवर्तन करें:

url = git@github.com:USER/PROJECT.git

सेवा

url = https://USER@github.com/USER/PROJECT.git

(ये मान git प्रोजेक्ट पेज पर हैं, बटन पर क्लिक करें SSHऔर HTTPge tthe new values पर क्लिक करें );


2
+1! लोनर मशीनों आदि से
एकतरफा

1
मुझे लगता httpsहै कि उपयोग करने के साथ एकमात्र समस्या यह है कि आपको उपयोगकर्ता में टाइप करना होगा / हर बार जब आप ऐसा करेंगे push, जब तक कि कुछ गिट विन्यास नहीं है, मुझे इसकी जानकारी नहीं है
hellatan

मुझे पता है कि यह सुपर पुराना है, लेकिन धन्यवाद। मेरी मशीन ssh के लिए सेटअप नहीं है, लेकिन यह अभी भी मेरे काम github खाते में धक्का देने की कोशिश कर रहा था बजाय एक बंद धक्का के लिए मेरे व्यक्तिगत। यह मेरी परियोजना निर्देशिका में मेरे .git / config में इस्तेमाल किया और अद्भुत काम किया। वाह! आप के लिए Upvote
सदाबहार

2
जागरूक रहें आप git push https://username:pass@github.com/user/repo.gitभी कर सकते हैं ... यदि आप passअपने शेल इतिहास में ठीक हैं
प्लेटो

यह सबसे अच्छा उपाय है। धन्यवाद!
कोडमिकी

33

github आपको ssh कुंजी के द्वारा पहचानता है जो git से किसी सेटिंग द्वारा नहीं देखी जाती है।

इसलिए, आपको यह सुनिश्चित करने की आवश्यकता है कि जब आप अपने व्यक्तिगत खाते के रूप में पुश करने का प्रयास करते हैं, तो आपके कार्य खाते की ssh कुंजी आपके कीरिंग में नहीं होती है। ssh-add -lयह निर्धारित करने के लिए उपयोग करें कि आपकी कीरिंग में कौन सी कुंजियाँ हैं, और ssh-add -d keyfileआपकी कीरिंग से एक कुंजी निकालने के लिए।

साथ ही, आपको यह जांचने की आवश्यकता हो सकती है कि ~/.ssh/configक्या आपने इसे कुछ ssh कुंजी को github के लिए प्रस्तुत करने के लिए कॉन्फ़िगर किया है। अंत में, मुझे नहीं पता कि github एक ही ssh सार्वजनिक कुंजी वाले दो खातों से कैसे निपटता है, इसलिए सुनिश्चित करें कि आप ऐसा नहीं करते हैं।


3
यदि आवश्यक हो, तो आप GIT_SSHssh के लिए एक अलग कमांड का उपयोग करने के लिए git को बताने के लिए पर्यावरण चर का उपयोग कर सकते हैं; विशेष रूप से, आपके पास एक विशिष्ट कुंजी का उपयोग हो सकता है। मुख्य git मैन पेज देखें , या शायद यह प्रश्न
Cascabel

मेरे सिस्टम पर (OSX 10.5), कीरिंग से कुंजी को हटाने की कमान थीssh-add -d keyfile
मोतिन

धन्यवाद @Motin, यह वास्तव में मेरे कहने का मतलब है। संपादित।
वाल्टर मुंड

12

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


@Carpetsmoker ऐसा लगता है कि ओपी एक मैक-विशिष्ट समाधान पेश कर रहा है।
ज़ेव स्पिट्ज

1
कृपया मूल पोस्ट खोजने और लिंक के रूप में जोड़ने का प्रयास करें।
ज़ेव स्पिट्ज


11

मुझे भी यही समस्या थी। यह पता चलता है कि मेरे पास एक ही SSH कुंजी का उपयोग करके GitHub पर दो खाते थे और GitHub ने उस गलत खाते का उपयोग करने के लिए डिफ़ॉल्ट रूप से उपयोग किया था जिसके पास मेरे बाद के रेपो की अनुमति नहीं थी। मैंने उस खाते से SSH कुंजी को हटा दिया जिसे मैंने अपेक्षित रूप से काम नहीं किया था।

आप यह जांच सकते हैं कि GitHub किस खाते से खुद को प्रमाणित कर रहा है:

ssh -T git@github.com

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


8

मुझे पता है कि इसमें थोड़ी देर हो सकती है, लेकिन मैं इसके साथ काफी समय से अटका हुआ था और आखिरकार इसे इस तरह तय किया:

उदाहरण स्क्रीनशॉट

  • किचेन एक्सेस (osX) में जाएं

  • खोज git (सुनिश्चित करें कि आपने सभी आइटम चुने हैं)

  • यहां आपको अपराधी साख मिलेगी। उन्हें हटाओ।

उम्मीद है की यह मदद करेगा!


यह एकमात्र उत्तर था जिसने मेरी मदद की!
वाइल्डर परेरा

इस जवाब ने मुझे मैक में समस्या को ठीक करने में मदद की।
जावास्क्रिप्ट हप्प टेक्नोलॉजीज

6

यह ऐसा करने का एक तरीका है: आप विभिन्न ssh खातों के लिए अलग ssh विन्यास का उपयोग कर सकते हैं।

22 फरवरी को अपडेट किया गया:

इस लिंक को देखें: https://gist.github.com/2351996


लिंक्ड जिस्ट और जिस्ट पेज पर पहली टिप्पणी ने मेरे लिए पूरी तरह से काम किया। मुझे लगता है कि यह वाल्टर मुंड के जवाब से बेहतर है क्योंकि आप अपने कीरिंग और 'सिर्फ काम करता है' पर कई कुंजी छोड़ सकते हैं।
कुंजी

3

अगर खाते से जुड़ी SSH कुंजी नहीं बदलती है, तो खाते से जुड़ी ईमेल को बदल दें।

Github> खाता सेटिंग> ईमेल पर जाएं और उस ईमेल पते को सत्यापित करें जिसका आप खाते में ईमेल से मिलान करने के लिए उपयोग कर रहे हैं।

क्या आप जिस ईमेल पते के लिए प्रतिबद्ध करने का उपयोग कर रहे देखने के लिए, निम्नलिखित कमांड चलाएँ: git config --global user.email। यदि आपको वह ईमेल पता बदलने की आवश्यकता है जिसका उपयोग आप कमिट, रन करने के लिए कर रहे हैं git config --global user.email "your_email@youremail.com"


2

मुझे वही मुद्दा मिला। नीचे मेरे मामले में क्या हुआ है:

मैंने पहले भी अपने क्रेडेंशियल को हर बार नहीं पूछने के लिए कहा था कि मैं इसके द्वारा दूरस्थ रिपॉजिटरी के साथ बात करता हूं: git config --global credential.helper wincred

मैंने "wincred" git config --global क्रेडेंशियल की जगह "कोई नहीं" के साथ एक ही कमांड चलाकर समस्या का समाधान किया।

फिर मेरे उपयोगकर्ता नाम पूछें / फिर से पास करें और सब कुछ ठीक हो जाए


1

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


1

मुझे एक अस्थायी समाधान मिला है जिसमें पहले दौड़ें killall ssh-agentफिर उस खाते के लिए उत्पन्न ssh कुंजियों को जोड़ें जिसे आपको उपयोग करने की आवश्यकता हैssh-add ~/.ssh/id_4shameer

यह एक तरीका है जिसमें हम कई गीथूब खाते पर काम कर सकते हैं जब हमें टाइप की त्रुटि मिलेगी ERROR: Permission to user/repo-git.git denied to username


1

कभी भी git के साथ कोई समस्या नहीं थी जब तक उन्होंने हाल ही में हमारे macbooks को सक्रिय निर्देशिका से नहीं जोड़ा और मेरी मशीन में कुछ व्यवस्थापक खाते जोड़े। हालाँकि, उसके बाद git ठीक काम करेगा जब तक मैं अपनी स्क्रीन लॉक नहीं करता और वापस आ जाता। तब मुझे एक अस्पष्ट त्रुटि मिलती

No user exists for uid 1927040837
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

मेरे पास अपने उपयोगकर्ता के लिए इस विशेष मशीन पर केवल एक ssh कुंजी है और अपने कार्यकाल में zsh का उपयोग कर रहा हूं। उपयोगकर्ता ईमेल और नाम सही थे इसलिए यह समस्या नहीं थी। एर्गो, हर बार जब मैं अपनी मशीन को बंद कर देता हूं, तो फिर से चालू करना निरर्थक है। मेरे लिए समाधान मेरे संपादन का था.zshrc फ़ाइल और ssh-key (जो मुझे पहले कभी नहीं करना पड़ा था और सालों से zsh का उपयोग कर रहा था) को निर्यात करने वाली लाइन को अनलॉक्ड करना था।

रेखा को कुछ इस तरह दिखना चाहिए:

# ssh
export SSH_KEY_PATH="~/.ssh/<your_rsa_id>"

एक बार जब आप ऐसा करते हैं तो बस resetटर्मिनल में चला जाता है और सब कुछ ठीक चलता है।

मैं उम्मीद करता हूं कि इससे किसी की मदद होगी।


0

मैं जोड़ना चाहूंगा - यदि आप किसी अन्य उपयोगकर्ता के खाते पर काम कर रहे हैं, तो सुनिश्चित करें कि आप अपने आप को रिपॉजिटरी सेटिंग्स के तहत सहयोगी क्षेत्र में जोड़ सकते हैं।


0

मैं इस समस्या में भी भाग गया और उपरोक्त समाधानों में से किसी ने भी काम नहीं किया जब मैंने अपनी ssh कुंजी को हटा दिया और एक नया बनाया। एसएच-एजेंट निकला एक कैश की गई कुंजी का उपयोग कर रहा था, इसलिए मुझे भागना पड़ा killall ssh-agentऔर फिर यह काम किया।

यहां समाधान मिला। http://fzysqr.com/2012/08/28/quick-tip-wrong-ssh-key-cached-with-github-after-changing-users-and-keys/

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