विभिन्न git repos के लिए यूज़रनेम और पासवर्ड कैसे सेट करें?


18
─[$] cat ~/.gitconfig

[user]
    name = Shirish Agarwal
    email = xxxx@xxxx.xxx
[core]
    editor = leafpad
    excludesfiles = /home/shirish/.gitignore
    gitproxy = \"ssh\" for gitorious.org
[merge]
    tool = meld
[push]
    default = simple
[color]
    ui = true
    status = auto
    branch = auto

अब मैं अपने git क्रेडेंशियल को github, gitlab और gitorious के लिए रखना चाहता हूं ताकि हर बार मुझे ब्राउज़र पर क्रेडेंशियल्स देखने की आवश्यकता न हो। यह कैसे किया जा सकता है ताकि यह स्वचालित हो?

मैं zsh चला रहा हूं

जवाबों:


21

SSH का उपयोग करना

Git ऑथेंटिकेशन को हैंडल करने का सामान्य तरीका यह है कि इसे SSH को सौंप दिया जाए। आमतौर पर आप अपनी SSH सार्वजनिक कुंजी को दूरस्थ रिपॉजिटरी ( जैसे GitHub पर ) में सेट करते हैं , और तब आप इसका उपयोग करते हैं, जब भी आपको प्रमाणित करने की आवश्यकता होती है। आप अपने डेस्कटॉप वातावरण द्वारा या मैन्युअल रूप से ssh-agentऔर इसके द्वारा संभाले जाते हैं, आप निश्चित रूप से एक प्रमुख एजेंट का उपयोग कर सकते हैं ssh-add

उपयोगकर्ता नाम निर्दिष्ट करने से बचने के लिए, आप उसे SSH में भी कॉन्फ़िगर कर सकते हैं ~/.ssh/config; उदाहरण के लिए मेरे पास है

Host git.opendaylight.org
  User skitt

और फिर मैं क्लोनिंग का उपयोग कर सकता हूं

git clone ssh://git.opendaylight.org:29418/aaa

(वहां एक उपयोगकर्ता नाम की अनुपस्थिति नोट करें)।

का उपयोग करते हुए gitcredentials

यदि SSH दृष्टिकोण लागू नहीं होता है ( जैसे कि आप HTTPS पर एक्सेस किए गए रिपॉजिटरी का उपयोग कर रहे हैं), git के पास क्रेडेंशियल्स को संभालने का अपना तरीका है, gitcredentials(और आमतौर पर git-credential-store)। आप अपना उपयोगकर्ता नाम निर्दिष्ट करें

git config credential.${remote}.username yourusername

और क्रेडेंशियल सहायक का उपयोग कर

git config credential.helper store

(निर्दिष्ट करें --globalकि क्या आप हर जगह इस सेटअप का उपयोग करना चाहते हैं)।

फिर पहली बार जब आप एक रिपॉजिटरी का उपयोग करते हैं, तो गिट आपके पासवर्ड के लिए पूछेगा, और इसे संग्रहीत किया जाएगा (डिफ़ॉल्ट रूप से ~/.git-credentials)। बाद में रिपॉजिटरी तक पहुँच आपको पूछने के बजाय संग्रहीत पासवर्ड का उपयोग करेगी।


1
आप के बारे में थोड़ा विस्तार से बता सकते हैं credential.${remote} और credential.helper। क्या कुछ दस्तावेज हैं जो आप बता सकते हैं कि यह पहली बार है जब मैं इसके बारे में पढ़ रहा हूं।
शिरीष sh

मैं अपने जवाब में मैनपावर से जुड़ा हुआ हूं, यही दस्तावेज है। ${remote}URI का प्रोटोकॉल और होस्टनाम हिस्सा है जिसे आप क्लोन करना चाहते हैं, helperएक सहायक प्रोग्राम को इंगित करता है।
स्टीफन किट

1
विषय पर प्रो गिट का एक अध्याय भी है ।
स्टीफन किट

7

बाद में इसे खोजने वालों के लिए - मुझे इससे मुश्किलें हुईं और आखिरकार यह काम कर गया

https / साख / उबंटू / उबंटू

  1. ग्लोबली अनसेट करें:
    git config --global --unset credentials.helper
  2. स्थानीय रूप से परेशान करें: (प्रत्येक रेपो में) git config --unset credential.helper
  3. प्रत्येक रेपो के लिए क्रेडेंशियल फ़ाइल बनाएँ: (प्रत्येक रेपो के अंदर)

    git config credential.helper 'store --file ~/.git_reponame_credentials'
    

यह नहीं कह रहा है कि यह सबसे अच्छा तरीका या एकमात्र तरीका है - लेकिन इसने कई निराशाजनक घंटों के बाद मेरे लिए काम किया।


जैसा स्टीफन किट ने ऊपर साझा किया है, वैसा ही प्रतीत होता है।
शिरीष

2
@ आशीष वास्तव में नहीं, तीसरा बिंदु वह था जिसकी मुझे आवश्यकता थी - यह निर्दिष्ट करने का विकल्प कि फाइलें कहाँ स्थित हैं।
मालती ब्रीडिस

@shirish; इसके अलावा, किट्स के निर्देशों ने यूएन क्रेडेंशियल्स को सेट करने को निर्दिष्ट नहीं किया है, जो कि मेरे लिए एक महत्वपूर्ण घटक था क्योंकि मैंने पहले ही उन्हें विश्व स्तर पर सेट किया था।
स्टीवजे

मुझे इस बात से भी कठिनाई थी कि ऐसा नहीं है जैसे कि सभी गिट रिपोज। आपको मिलेगा एक ही स्रोत / स्टोर से। दूसरा बेहतर है लेकिन वास्तविकता में काम करने के लिए बहुत अधिक निराशाजनक है। फिर भी साझा करने के लिए धन्यवाद। @SteveJ
शिरीष
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.