Git [GitExtension] में यूज़रनेम और पासवर्ड कैसे सेव करें?


1233

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

तो मैं अपनी साख को कैसे बचा सकता हूं?


1
आप SSH के माध्यम से भी प्रमाणित कर सकते हैं: stackoverflow.com/questions/6565357/…
एंटोन तारासेंको


1
@AntonTarasenko मेरे gitconfig प्रॉक्सी के बारे में कुछ नहीं कहते हैं, केवल [उपयोगकर्ता] ईमेल = email@dummy.com नाम = बिना नाम [साख] सहायक = स्टोर
gc7__

जवाबों:


2194

Daud

git config --global credential.helper store

फिर

git pull

एक उपयोगकर्ता नाम और पासवर्ड प्रदान करें और उन विवरणों को बाद में याद किया जाएगा। क्रेडेंशियल डिस्क पर एक फ़ाइल में संग्रहीत हैं, "बस उपयोगकर्ता पठनीय / लिखने योग्य" की डिस्क अनुमतियों के साथ लेकिन फिर भी सादे में।

अगर आप बाद में पासवर्ड बदलना चाहते हैं

git pull

विफल हो जाएगा, क्योंकि पासवर्ड गलत है, git तो ~/.git-credentialsफ़ाइल से आपत्तिजनक उपयोगकर्ता + पासवर्ड हटा देता है , इसलिए अब फिर से चलाएँ

git pull

एक नया पासवर्ड प्रदान करने के लिए यह पहले की तरह काम करता है।


6
पासवर्ड को बाद में बदलना कैसे महत्वपूर्ण है?
ल्यूसिडब्रॉट

8
डेबियन / उबंटू के लिए libsecret stackoverflow.com/questions/36585496/…
rofrol

3
@lucidbrot देर से जवाब देने के लिए क्षमा करें। git pull -u नवीनतम संस्करण के साथ काम नहीं कर रहा है। मैंने जवाब अपडेट कर दिया है। आशा है कि यह आपके प्रश्न का उत्तर देगा।
नीतिका

51
ध्यान दें कि यह आपके उपयोगकर्ता नाम और पासवर्ड को ~ / .IT- क्रेडेंशियल्स पर एक सादे पाठ फ़ाइल में संग्रहीत करेगा। इसे कोई भी खोल कर पढ़ सकता है।
रोबोएलेक्स

12
यह काम नहीं करता है। यह खींचने में विफल रहता है।
उर्सकॉग्रेल

348

आप git configगिट में भंडारण क्षमता को सक्षम करने के लिए उपयोग कर सकते हैं ।

git config --global credential.helper store

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

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

स्टोरेज फॉर्मेट एक .git-credentialsफाइल है, जो प्लेनटेक्स्ट में स्टोर होती है।

इसके अलावा, आप git config credential.helperमेमोरी कैश के लिए अन्य सहायकों का उपयोग कर सकते हैं :

git config credential.helper cache <timeout>

जो एक वैकल्पिक लेता है timeout parameter, यह निर्धारित करने के लिए कि कब तक क्रेडेंशियल्स को स्मृति में रखा जाएगा। सहायक का उपयोग करते हुए, क्रेडेंशियल कभी भी डिस्क को नहीं छूएगा और निर्दिष्ट समय समाप्त होने के बाद मिट जाएगा। defaultमूल्य है900 seconds (15 minutes).


चेतावनी : यदि आप इस पद्धति का उपयोग करते हैं, तो आपके git खाते के पासवर्ड plaintextप्रारूप में सहेजे जाएंगे global .gitconfig file, जैसे कि linux में यह होगा/home/[username]/.gitconfig

यदि यह आपके लिए अवांछनीय है, तो ssh keyइसके बजाय अपने खातों के लिए उपयोग करें।


3
काश आपने .gitconfig फ़ाइल दिखाई - पहला आदेश दूसरे द्वारा अधिलेखित कर दिया गया है :(
एडम

3
के लिए git config credential.helper cacheपासवर्ड को एक फ़ाइल में सहेजा नहीं जाएगा, केवल स्मृति में संग्रहीत। देखें: git-scm.com/docs/git-credential-cache
SA

1
काम नहीं करता। घातक देता है: प्रमाणीकरण विफल रहा। नहीं भी पासवर्ड के लिए पूछें।
फिलिप रेगो

2
एक परिशिष्ट के रूप में - आपकी निजी ssh-key को उपयोगकर्ता-सुलभ स्थान में प्लेनटेक्स्ट में भी संग्रहीत किया जाएगा, इसलिए दोनों ही मामलों में एक ही हमले की सतह।
फाल्को

मैं इसे gitlab के लिए कैसे उपयोग कर सकता हूं
anil

169

अनुशंसित और सुरक्षित विधि: एसएसएच

एक ssh Github कुंजी बनाएँ। पर जाएं github.com -> सेटिंग्स -> SSH और GPG कुंजी -> नई SSH कुंजी। अब अपनी निजी कुंजी को अपने कंप्यूटर में सहेजें।

तो फिर, अगर निजी कुंजी के रूप में सहेजा गया है id_rsa में ~ / .ssh / निर्देशिका है, हम इसे इस तरह के रूप प्रमाणीकरण के लिए जोड़ें:

ssh-add -K ~/.ssh/id_rsa


एक अधिक सुरक्षित तरीका: कैशिंग

हम अपने यूज़रनेम और पासवर्ड को एक समयावधि के लिए कैश करने के लिए git-क्रेडेंशियल-स्टोर का उपयोग कर सकते हैं। बस अपने सीएलआई (टर्मिनल या कमांड प्रॉम्प्ट) में निम्नलिखित दर्ज करें:

git config --global credential.helper cache

आप टाइमआउट अवधि (सेकंड में) को इस तरह सेट कर सकते हैं:

git config --global credential.helper 'cache --timeout=3600'


एक भी कम सुरक्षित तरीका

Git- क्रेडेंशियल-स्टोर का भी उपयोग किया जा सकता है, लेकिन आपके डिस्क पर सादे पाठ फ़ाइल में पासवर्ड को बचाता है:

git config credential.helper store


आउटडेटेड उत्तर - त्वरित और असुरक्षित

यह आपके पासवर्ड को सादे पाठ में संग्रहीत करने की एक असुरक्षित विधि है। यदि कोई आपके कंप्यूटर पर नियंत्रण प्राप्त करता है, तो आपका पासवर्ड सामने आ जाएगा!

आप अपना उपयोगकर्ता नाम और पासवर्ड इस तरह सेट कर सकते हैं:

git config --global user.name "your username"

git config --global user.password "your password"

15
यह मेरे लिए काम नहीं किया, git क्लोन अभी भी उपयोगकर्ता नाम और पासवर्ड के लिए पूछता है
ओलिवर

11
मैं आपके पासवर्ड को इस तरह स्टोर करने की सलाह नहीं देता क्योंकि "git config --global -l" कंसोल पर आपके पासवर्ड को प्रकट करेगा
CCC

1
यह मेरे लिए काम नहीं कर रहा है। यह अजीब है कि यह किसी के लिए भी काम करना चाहिए, क्योंकि gitconfig के विनिर्देश में "पासवर्ड" के लिए कोई जगह नहीं है
Hamish Todd

.itconfig एक अलग फ़ाइल है: .it- क्रेडेंशियल आपके होम फ़ोल्डर में स्थित URL में आपके उपयोगकर्ता नाम और पासवर्ड के साथ repo URL होता है, जैसे git: // उपयोगकर्ता नाम: पासवर्ड @ सर्वर / git / रेपो सावधान रहें, IT सुरक्षित है पाठ पासवर्ड। यदि आप ssh कीज़ का उपयोग नहीं कर सकते हैं तो "git config --global क्रेडेंशियल.हेलर कैश" का उपयोग करें।
स्केबिट

जब मैंने उपयोगकर्ता और पासवर्ड को मैन्युअल रूप से कॉन्फ़िगर करने की कोशिश की तो फ़ाइल टूट गई और मुझे फिर से रेपो क्लोन करना पड़ा। इस कोशिश मत करो ..
लेटी Techera

102

क्रेडेंशियल हेल्पर चालू करें ताकि Git आपके पासवर्ड को कुछ समय के लिए मेमोरी में बचाएगा:

टर्मिनल में, निम्नलिखित दर्ज करें:

# Set git to use the credential memory cache
git config --global credential.helper cache

डिफ़ॉल्ट रूप से, Git आपके पासवर्ड को 15 मिनट तक कैश करेगा।

डिफ़ॉल्ट पासवर्ड कैश टाइमआउट बदलने के लिए, निम्नलिखित दर्ज करें:

# Set the cache to timeout after 1 hour (setting is in seconds)
git config --global credential.helper 'cache --timeout=3600'

से GitHub सहायता


7
आप केवल एक ही व्यक्ति हैं जिसने वैश्विक संस्करण का सुझाव दिया है जो महत्वपूर्ण है, क्योंकि यह मेरे लिए हर बार बर्बाद हो गया क्योंकि मैंने रेपो का पुन: क्लोन किया
ज़ेरुस

4
अनन्तकाल तक का समय कैसे तय करें? मैं कभी भी अपना पासवर्ड दोबारा दर्ज नहीं करना चाहता।
अवामेंडर

8
@ अवामंदर बस cacheभाग को बदलें store। तो, पूरा कमांड होगा git config --global credential.helper store:। ध्यान दें कि यह आपके पासवर्ड को एक खुले-पाठ फ़ाइल (बिना किसी एन्क्रिप्शन के, इसलिए कहने के लिए) में संग्रहीत करेगा।
अलेक्जांद्र

2
@ कैस्पर जो एक से अधिक खातों के साथ काम नहीं करता है, ई-मेल के आधार पर स्टोर से पासवर्ड नहीं लिया जाता है, जैसे कि सूची में पहले एक को लेना चाहिए।
अवामेंडर

2
@ अवामंदर हम्म .. क्या ऐसा होना चाहिए या यह एक बग हो सकता है? --timeoutपैरामीटर के लिए अधिकतम मूल्य क्या है ?
अलेक्जेंडर

50

आप अपने क्रेडेंशियल्स~/.gitconfig को संग्रहीत करने के लिए फ़ाइल को संपादित कर सकते हैं

sudo nano ~/.gitconfig

जो पहले से ही होना चाहिए

[user]
        email = your@email.com
        user = gitUSER

आपको इस फ़ाइल के नीचे जोड़ना चाहिए।

[credential]
        helper = store

मेरे द्वारा इस विकल्प की सिफारिश करने का कारण यह है कि यह वैश्विक है और यदि किसी भी बिंदु पर आपको उस विकल्प को हटाने की आवश्यकता है जिसे आप जानते हैं कि इसे कहां जाना है और इसे बदलना है।

केवल आप कंप्यूटर में इस विकल्प का उपयोग करें।

फिर जब तुम खींचो | क्लोन | आप पासवर्ड दर्ज करें, सामान्य रूप से, पासवर्ड ~/.git-credentialsप्रारूप में सहेजा जाएगा

https://GITUSER:GITPASSWORD@DOMAIN.XXX

जहां DOMAIN.XXX COULD BE GITHUB.COM | BITBUCKET.ORG | अन्य

डॉक्स देखें

अपने टर्मिनल को पुनरारंभ करें।


1
Git bash विंडो को रीस्टार्ट करना न भूलें। केवल जब मैंने ऐसा किया, तो यह मेरे लिए काम कर गया।
sofs1

33

बस अपनी साख इस तरह से Url में डालें:

https://Username: Password@github.com/myRepoDir/myRepo.git

आप इसे इस तरह स्टोर कर सकते हैं :

git remote add myrepo https://Userna...

... इसका उपयोग करने के लिए उदाहरण :

git push myrepo master


अब यह url उपनामों की सूची बनाना है:

git remote -v

... और यह कि उनमें से एक को हटाने का आदेश:

git remote rm myrepo


8
आप अपने पासवर्ड को URL से बाहर भी छोड़ सकते हैं, इसलिए Git आपका पासवर्ड पूछेगा, लेकिन आपका उपयोगकर्ता नाम नहीं।
कंगारू

यह HTTP के बजाय SSH का उपयोग करना बहुत आसान और सुरक्षित है। इसलिए, आप अपने Git पासवर्ड को गुप्त रख सकते हैं और केवल अपने SSH-Key का उपयोग कर सकते हैं। SSH के बारे में जानकारी Git: help.github.com/en/enterprise/2.16/user/… git@github.com:Username/myRepo.git
Loïch

Url में आपका पासवर्ड होने से इसे आपके टर्मिनल के इतिहास में सहेजा जाएगा, इसलिए यह तरीका बहुत सुरक्षित नहीं है।
जोश कोर्रेया

ध्यान दें कि विकी को वर्तमान में केवल क्लोन किया जा सकता है https, नहीं ssh, इसलिए इस तरह का एक समाधान वहां उपयोगी हो सकता है। यह भी ध्यान दें कि आप एक ऑउथ-टोकन का उपयोग कर सकते हैं, जो कि आपके गीथहब पासवर्ड से थोड़ा अधिक सुरक्षित है।
एस्ट्रोफ्लोयड

31

वैश्विक सेटिंग के लिए, टर्मिनल खोलें (जहां से भी) निम्नलिखित चलाएं:

  git config --global user.name "your username"
  git config --global user.password "your password"

उसके द्वारा, आपके मशीन पर आपके पास मौजूद कोई भी स्थानीय प्रतिनिधि उस जानकारी का उपयोग करेगा।

आप व्यक्तिगत रूप से प्रत्येक रेपो के लिए कॉन्फ़िगर कर सकते हैं:

  • रेपो फोल्डर में टर्मिनल खोलें।
  • निम्नलिखित चलाएं:

    git config user.name "your username"
    git config user.password "your password"
    

यह केवल उस फ़ोल्डर को प्रभावित करता है (क्योंकि आपका कॉन्फ़िगरेशन स्थानीय है)।


8
क्या किसी भी व्यक्ति द्वारा देखे जा सकने वाले सरल कॉन्फिग फाइल में इस तरह की साख होना खतरनाक नहीं है?
बूल

1
आपका प्रश्न किसी अन्य विषय के लिए होना चाहिए। यहां हम वैश्विक और स्थानीय रूप से नाम और पासवर्ड को कॉन्फ़िगर करने के तरीके के बारे में डिस्कस करते हैं।
तुआन्हकवर्स

इनपुट दोस्त के लिए धन्यवाद
bool3max

11
मैं बस यह जोड़ना चाहूंगा कि किसी उत्तर के संभावित सुरक्षा मुद्दों के बारे में पूछना यहाँ एक जगह है क्योंकि यह सीधे इसकी गुणवत्ता और संभावित रूप से इसे लागू करने वाले हजारों उपयोगकर्ताओं को प्रभावित करता है।
माइकल कार्ल

2
मेरे लिए काम नहीं करता है, --localटैग जोड़ा है, लेकिन फिर कुछ भी नहीं होता है
PayamBeirami

23

आप अपने पासवर्ड को डिस्क पर अनएन्क्रिप्टेड स्टोर करने के लिए git-क्रेडेंशियल-स्टोर का उपयोग कर सकते हैं, केवल फ़ाइल सिस्टम की अनुमतियों द्वारा संरक्षित।

उदाहरण

$ git config credential.helper store
$ git push http://example.com/repo.git
Username: <type your username>
Password: <type your password>

[several days later]
$ git push http://example.com/repo.git
[your credentials are used automatically]

आप फ़ाइल में संग्रहीत क्रेडेंशियल्स की जांच कर सकते हैं ~/.git-credentials

अधिक जानकारी के लिए git-क्रेडेंशियल-स्टोर पर जाएं - डिस्क पर क्रेडेंशियल्स स्टोर करने के लिए हेल्पर


17

यदि आप उपयोगकर्ता नाम / पासवर्ड प्रमाणीकरण की तुलना में SSH प्रमाणीकरण का उपयोग करते हैं तो आप अधिक सुरक्षित होंगे।

यदि आप एक मैक का उपयोग कर रहे हैं, तो SSH क्लाइंट प्रमाणीकरण को MacOS चाबी का गुच्छा में एकीकृत किया गया है। एक बार SSH कुंजी बनाने के बाद, अपने टर्मिनल में टाइप करें:

ssh-add -K ~/.ssh/id_rsa

यह MacH चाबी का गुच्छा में SSH निजी कुंजी जोड़ देगा। जब यह दूरस्थ सर्वर से जुड़ता है तो git क्लाइंट ssh का उपयोग करेगा। जब तक आपने सर्वर के साथ अपनी ssh सार्वजनिक कुंजी पंजीकृत की है, तब तक आप ठीक रहेंगे।


1
K नहीं होना चाहिए?
dez93_2000

1
FYI करें: मैं एक मैक पर काम कर रहा हूँ। कहा जा रहा है कि, "आदमी" जानकारी से: "-क" जब एजेंट से कुंजियों को लोड करना या कुंजी को हटाना है, तो सादा निजी कुंजी को ही संसाधित करें और प्रमाणपत्र छोड़ दें। "-K" पहचान जोड़ते समय, प्रत्येक पासफ़्रेज़ को उपयोगकर्ता के किचेन में भी संग्रहीत किया जाएगा। -D के साथ पहचान हटाते समय, प्रत्येक पासफ़्रेज़ को इससे हटा दिया जाएगा।
बायोल एफे

3
मुझे नहीं लगता कि यह काम https- आधारित रिपॉजिटरी के लिए है।
जक्कम

5
यह उत्तर SSH निजी कुंजी के साथ पासवर्ड (HTTPS repos) को भ्रमित करने के लिए लगता है।
स्टीव बेनेट ने

2
मैं असहमत हूं। होस्ट तक पहुँच प्रदान करके आप अधिक सुरक्षित नहीं हो SSHसकते। HTTP प्रमाणीकरण का उपयोग करते हुए, जो कोई चोरी करता है, उसके पास केवल पहुंच होगी GitHub/GitLab। इसके अलावा टोकन सीमित जीवन के लिए डिज़ाइन किए गए हैं।
दिमित्री कोपरिवा

16

एसओ के दर्जनों पदों, ब्लॉग्स आदि पर जाने के बाद , मैंने हर तरीके को आजमाया , और यही मेरे साथ आया। इसमें सब कुछ शामिल है।

वेनिला DevOps Git क्रेडेंशियल और निजी संकुल धोखा देती है

ये सभी तरीके और उपकरण हैं जिनके द्वारा आप एक इंटरैक्टिव पासवर्ड प्रॉम्प्ट के बिना एक रिपॉजिटरी को क्लोन करने के लिए गिट को सुरक्षित रूप से प्रमाणित कर सकते हैं

  • SSH सार्वजनिक कुंजी
    • SSH_ASKPASS
  • एपीआई एक्सेस टोकन
    • GIT_ASKPASS
    • इसके बजाय .itconfig
    • .itconfig [साख]
    • .git-साख
    • .netrc
  • निजी पैकेज (मुफ्त में)
    • नोड / npm package.json
    • अजगर / पाइप / अंडे आवश्यकताओं
    • माणिक रत्न रत्न
    • golang go.mod

सिल्वर बुलेट

बस काम करना चाहते हैं ™? यह जादू चांदी की गोली है।

अपना एक्सेस टोकन प्राप्त करें (यदि आपके लिए गितुब या गिटिया निर्देशों की आवश्यकता है तो धोखा देती में अनुभाग देखें) और इसे पर्यावरण चर (स्थानीय देव और तैनाती दोनों के लिए) में सेट करें:

MY_GIT_TOKEN=xxxxxxxxxxxxxxxx

Github के लिए, कॉपी और इन पंक्तियों को चलाने शब्दशः :

git config --global url."https://api:$MY_GIT_TOKEN@github.com/".insteadOf "https://github.com/"
git config --global url."https://ssh:$MY_GIT_TOKEN@github.com/".insteadOf "ssh://git@github.com/"
git config --global url."https://git:$MY_GIT_TOKEN@github.com/".insteadOf "git@github.com:"

बधाई हो, अब कोई भी स्वचालित टूल क्लोनिंग रिपॉजिटरी को पासवर्ड प्रॉम्प्ट द्वारा बाधित नहीं किया जाएगा, चाहे वह https का उपयोग कर रहा हो या या तो ssh url का स्टाइल।

Github का उपयोग नहीं कर रहे हैं?

अन्य प्लेटफार्मों (Gitea, Github, Bitbucket) के लिए, बस URL बदलें। उपयोगकर्ता नाम न बदलें (हालांकि मनमाने ढंग से, उन्हें अलग-अलग कॉन्फ़िगरेशन प्रविष्टियों के लिए आवश्यक है)।

अनुकूलता

यह मैकओएस, लिनक्स, विंडोज (बाश में), डॉकर, सर्कलसीआई, हरोकू, एककेरिस, आदि में स्थानीय रूप से काम करता है।

और जानकारी

चीटशीट का ".gitconfig बजाय ऑउट" खंड देखें।

सुरक्षा

चीटशीट का "सुरक्षा" खंड देखें।


2
यह एक लाइफसेवर है। धन्यवाद।
annaoomph

2
क्या मैं के बाद था git config --global credential."https://somegithost.com".username MyUserName, जो है में अपने cheatsheet, लेकिन नहीं कहीं और इस उत्तर के सूत्र में। यह विशेष समाधान ओपी के सवाल का जवाब नहीं देता है, लेकिन इसने मेरा जवाब दिया, इसलिए धन्यवाद!
TheDudeAbides

1
यह अद्भुत है !!! सर्वश्रेष्ठ उत्तर, बहुत बहुत धन्यवाद।
परसा

12

उस स्थिति में आपको कमांड लाइन का उपयोग करके अपने GitHub पासवर्ड और उपयोगकर्ता नाम को याद रखने के लिए git को बताने के लिए git क्रेडेंशियल हेल्पर की आवश्यकता है:

git config --global credential.helper wincred 

और यदि आप SSH कुंजी का उपयोग करके रेपो का उपयोग कर रहे हैं तो आपको प्रमाणित करने के लिए SSH कुंजी की आवश्यकता है।


11

ऊपर दिए गए किसी भी उत्तर ने मेरे लिए काम नहीं किया। मैं हर बार निम्नलिखित प्राप्त करना चाहता था जो मैं चाहता था fetchया pull:

Enter passphrase for key '/Users/myusername/.ssh/id_rsa':


मैक के लिए

मैं इसे अपना पासफ़्रेज़ पूछने से रोकने में सक्षम था:

  1. रनिंग द्वारा कॉन्फ़िगर खोलें: vi ~/.ssh/config
  2. निम्नलिखित जोड़ा गया: UseKeychain yes
  3. सहेजा और छोड़ दिया: Esc दबाएँ , फिर दर्ज करें:wq!

विंडोज के लिए

मैं इस स्टैकएक्सचेंज में जानकारी का उपयोग करके काम करने में सक्षम था: https://unix.stackexchange.com/a/12201/348665


ऐसा इसलिए है क्योंकि आप SSH प्रोटोकॉल का उपयोग कर रहे हैं (अन्य उत्तर HTTPS का उपयोग करते हैं)।
मर्सिडीज

6

~/.gitconfigफ़ाइल को संपादित करने के अलावा , यदि आप पूछें कि आप क्या कर सकते हैं:

git config --local --edit

या

git config --global --edit

हमेशा एक उद्धरण का उपयोग करने के लिए ध्यान दें :

git config --local user.name 'your username'
git config --local user.password 'your password'

या

git config --global user.name 'your username'
git config --global user.password 'your password'

यदि आप दोहरे उद्धरण चिह्नों का उपयोग करते हैं तो आपका उपयोगकर्ता नाम और पासवर्ड कुछ वर्णों का उपयोग कर सकते हैं जो आपके पासवर्ड को तोड़ देंगे।

--localया --globalइसका मतलब है कि कॉन्फ़िगरेशन पैरा प्रोजेक्ट या ओएस उपयोगकर्ता के लिए सहेजे गए हैं।


यह भी एक की जाँच करें जो और भी अधिक समझाता है।
प्रोस्टी

6

महज प्रयोग करें

git config --global credential.helper store

और git पुल करें , यह उपयोगकर्ता नाम और पासवर्ड मांगेगा, अब से यह उपयोगकर्ता नाम और पासवर्ड के लिए कोई संकेत नहीं देगा, यह विवरण संग्रहीत करेगा


4
आपने अभी मूल रूप से स्वीकृत उत्तर दोहराया है ।
jsamol

4

उपयोगकर्ता नाम और पासवर्ड स्टोर करें

.git-credentialsआपके उपयोगकर्ता नाम और पासवर्ड (एक्सेस टोकन) आपके द्वारा चलाए जाने पर संग्रहीत किए जाते हैं git config --global credential.helper store, जो कि अन्य उत्तर सुझाते हैं, और फिर अपने उपयोगकर्ता नाम और पासवर्ड या एक्सेस टोकन टाइप करें:

https://${username_or_access_token}:${password_or_access_token}@github.com

तो, उपयोगकर्ता नाम और पासवर्ड (एक्सेस टोकन) को बचाने के लिए:

git config —-global credential.helper store
echo “https://${username}:${password_or_access_token}@github.com“ > ~/.git-credentials

यह github रोबोट के लिए बहुत उपयोगी है, उदाहरण के लिए, विभिन्न शाखा के लिए नियम होने से एक ही docker रिपॉजिटरी में चेन स्वचालित बिल्ड को हल करने के लिए और फिर post_pushdocker hub में इसे हुकर में पुश करके ट्रिगर करें ।

इसका एक उदाहरण यहां स्टैकओवरफ्लो में देखा जा सकता है ।


धन्यवाद, आप एक जीवन रक्षक हैं! हम https भी सेट कर सकते हैं: // $ {access_token}: $ {access_token} @ github.com
Lucas Mendes Mota Da Fonseca

1
@LucasMendesMotaDaFonseca टोकन का उपयोग उपयोगकर्ता नाम के रूप में किया जा सकता है ???
जियाहो जू

3

क्रेडिट क्रेडेंशियल्स कैश करने का एक त्वरित तरीका:

git config credential.helper 'cache' --timeout=10800

अच्छा और सुरक्षित

समय समाप्त सेकंड में है।


2

थ्रेड को पूर्ण रूप से पढ़ने और इस प्रश्न के अधिकांश उत्तरों के साथ प्रयोग करने के बाद, मुझे अंततः वह प्रक्रिया मिली जो मेरे लिए काम करती है। मैं इसे साझा करना चाहता हूं अगर किसी को एक जटिल उपयोग के मामले से निपटना है, लेकिन फिर भी पूर्ण धागा और gitcredentials , gitcredentials-store आदि मैन पेजों के माध्यम से नहीं जाना चाहता , जैसा कि मैंने किया था।

नीचे दी गई प्रक्रिया के अनुसार मुझे सुझाव है कि यदि आप (मेरे जैसे) को कई अलग-अलग उपयोगकर्ता नाम / पासवर्ड संयोजन का उपयोग करके कई प्रदाताओं (GitLab, GitHub, Bitbucket, आदि) से कई रिपॉजिटरी से निपटना है। यदि आपके पास काम करने के लिए केवल एक ही खाता है, तो आप बेहतर हो सकते हैं git config --global credential.helper storeया ऐसे git config --global user.name "your username"समाधानों को नियोजित कर सकते हैं जिन्हें पिछले उत्तरों में बहुत अच्छी तरह से समझाया गया है।

मेरा समाधान:

  1. मामले में कुछ पूर्व प्रयोग हो जाता है, परेशान वैश्विक साख सहायक, :)

> git config --global --unset credentials.helper

  1. अपने रेपो की मूल निर्देशिका में जाएं और स्थानीय क्रेडेंशियल हेल्पर को अक्षम करें (यदि आवश्यक हो)

> cd /path/to/my/repo

> git config --unset credential.helper

  1. अपने रेपो के क्रेडेंशियल्स को स्टोर करने के लिए एक फ़ाइल बनाएं

> git config credential.helper 'store --file ~/.git_repo_credentials'

नोट : यह कमांड आपके घर निर्देशिका में ".git_repo_credentials" नामक एक नई फ़ाइल बनाता है, जिसमें Git आपके क्रेडेंशियल्स को संग्रहीत करता है। यदि आप एक फ़ाइल नाम निर्दिष्ट नहीं करते हैं, तो Git डिफ़ॉल्ट ".git_credentials" का उपयोग करता है। इस मामले में बस निम्नलिखित आदेश जारी करना होगा:

> git config credential.helper store

  1. अपना उपयोगकर्ता नाम सेट करें

git config credential.*.username my_user_name

नोट : "*" का उपयोग करना आमतौर पर ठीक है यदि आपकी रिपॉजिटरी एक ही प्रदाता (जैसे गिटलैब) से हो। यदि इसके बजाय आपके रिपॉजिटरी को अलग-अलग प्रदाताओं द्वारा होस्ट किया जाता है, तो मैं प्रत्येक रिपॉजिटरी के लिए प्रदाता को लिंक को स्पष्ट रूप से सेट करने का सुझाव देता हूं, जैसे कि निम्न उदाहरण (गिटलैब के लिए):

git config credential.https://gitlab.com.username my_user_name

इस बिंदु पर यदि आप अपने क्रेडेंशियल (जैसे git pull) की आवश्यकता के लिए एक कमांड जारी करते हैं, तो आपको "my_user_name" के अनुरूप पासवर्ड के लिए कहा जाएगा। यह केवल एक बार आवश्यक है क्योंकि git क्रेडेंशियल को ".git_repo_credentials" में संग्रहीत करता है और बाद के एक्सेस में स्वचालित रूप से उसी डेटा का उपयोग करता है।


2

इस उत्तर से, लिनक्स उबंटू पर rifrol द्वारा टिप्पणी से , यहाँ देखें कि उबंटू में कैसे:

sudo apt-get install libsecret-1-0 libsecret-1-dev
cd /usr/share/doc/git/contrib/credential/libsecret
sudo make
git config --global credential.helper /usr/share/doc/git/contrib/credential/libsecret/git-credential-libsecret

कुछ अन्य डिस्ट्रो बाइनरी प्रदान करते हैं ताकि आपको इसे बनाने की आवश्यकता न हो।

ओएस एक्स में यह आमतौर पर "ओक्सीक्सचैन" के डिफ़ॉल्ट मॉड्यूल के साथ "निर्मित" आता है, इसलिए आपको यह मुफ्त में मिलता है।


2

आधिकारिक गिट प्रलेखन की जाँच करें:

यदि आप SSH ट्रांसपोर्ट का उपयोग रीमोट से कनेक्ट करने के लिए करते हैं, तो आपके लिए पासफ़्रेज़ के बिना एक कुंजी होना संभव है, जो आपको अपने उपयोगकर्ता नाम और पासवर्ड में टाइप किए बिना डेटा को सुरक्षित रूप से स्थानांतरित करने की अनुमति देता है। हालांकि, यह HTTP प्रोटोकॉल के साथ संभव नहीं है - हर कनेक्शन को एक उपयोगकर्ता नाम और पासवर्ड की आवश्यकता होती है। यह दो-कारक प्रमाणीकरण के साथ सिस्टम के लिए और भी कठिन हो जाता है, जहां एक पासवर्ड के लिए आप जिस टोकन का उपयोग करते हैं, वह बेतरतीब ढंग से उत्पन्न और अप्राप्य है।

सौभाग्य से, Git में एक क्रेडेंशियल सिस्टम है जो इसके साथ मदद कर सकता है। बॉक्स में कुछ विकल्प दिए गए हैं:

  • डिफ़ॉल्ट कैश नहीं है। हर कनेक्शन आपको अपने उपयोगकर्ता नाम और पासवर्ड के लिए संकेत देगा।

  • "कैश" मोड एक निश्चित अवधि के लिए मेमोरी में क्रेडेंशियल्स रखता है। कोई भी पासवर्ड कभी भी डिस्क पर संग्रहीत नहीं किया जाता है, और उन्हें 15 मिनट के बाद कैश से शुद्ध किया जाता है।

  • "स्टोर" मोड डिस्क पर एक सादा-पाठ फ़ाइल में क्रेडेंशियल्स को बचाता है, और वे कभी भी समाप्त नहीं होते हैं। इसका मतलब यह है कि जब तक आप Git होस्ट के लिए अपना पासवर्ड नहीं बदलते हैं, तब तक आपको अपने क्रेडेंशियल में फिर से लिखना नहीं पड़ेगा। इस दृष्टिकोण का नकारात्मक पक्ष यह है कि आपके पासवर्ड को आपके होम डायरेक्टरी में एक सादे फ़ाइल में क्लीयरटेक्स्ट में संग्रहीत किया जाता है।

  • यदि आप एक मैक का उपयोग कर रहे हैं, तो Git एक "osxkeychain" मोड के साथ आता है, जो आपके सिस्टम खाते से जुड़ी सुरक्षित किचेन में क्रेडेंशियल्स को कैश करता है। यह विधि डिस्क पर क्रेडेंशियल्स को संग्रहीत करती है, और वे कभी भी समाप्त नहीं होते हैं, लेकिन वे उसी प्रणाली के साथ एन्क्रिप्टेड होते हैं जो HTTPS प्रमाणपत्र और सफारी ऑटो-फिल्स को संग्रहीत करता है।

  • यदि आप Windows का उपयोग कर रहे हैं, तो आप "Windows के लिए Git क्रेडेंशियल मैनेजर" नामक एक सहायक स्थापित कर सकते हैं। यह ऊपर वर्णित "ऑक्सकिचेचिन" सहायक के समान है, लेकिन संवेदनशील जानकारी को नियंत्रित करने के लिए विंडोज क्रेडेंशियल स्टोर का उपयोग करता है। यह https://github.com/Microsoft/Git-Credential-Manager-for-Windows पर पाया जा सकता है ।

Git कॉन्फ़िगरेशन मान सेट करके आप इनमें से कोई एक विधि चुन सकते हैं:

$ git config --global credential.helper cache

$ git config --global credential.helper store

https://git-scm.com/book/en/v2/Git-Tools-Credential-Storage

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