मैं ssh के लिए डिफ़ॉल्ट रूप से कैसे गेट करूँ और नए रिपॉजिटरी के लिए https नहीं


205

इन दिनों जब मैं सेटअप पृष्ठ पर GitHub पर एक नया भंडार बनाता हूं:

git remote add origin https://github.com/nikhilbhardwaj/abc.git
git push -u origin master

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

मैं इसे मैन्युअल रूप से बदल सकता हूं

git@github.com:nikhilbhardwaj/abc.git

में .git/config। मुझे यह काफी चिड़चिड़ा लगता है - क्या कोई तरीका है जो मैं डिफ़ॉल्ट रूप से SSH का उपयोग करने के लिए git कॉन्फ़िगर कर सकता हूं?


मुझे लगता है कि @ MoOx का उत्तर संभवतः सबसे अधिक सुसंगत है जो आप चाह रहे हैं। यह insteadOfट्रिक कम से कम 2012 के आसपास रही है। यह भी देखें कि यूआरएल को यूआरएल में कैसे बदला जाएgit:http:
jww

जवाबों:


299

एसएसएच होने के लिए एक रिपॉजिटरी की मूल शाखा स्थापित करें

GitHub रिपॉजिटरी सेटअप पृष्ठ केवल आदेशों की एक सुझाई गई सूची है (और GitHub अब HTTPS प्रोटोकॉल का उपयोग करने का सुझाव देता है)। जब तक आपके पास GitHub की साइट पर प्रशासनिक पहुंच नहीं है, मुझे उनके सुझाए गए आदेशों को बदलने का कोई तरीका नहीं पता है।

यदि आप SSH प्रोटोकॉल का उपयोग करना चाहते हैं, तो बस एक दूरस्थ शाखा जोड़ें जैसे (यानी इस कमांड का उपयोग करें GitHub के सुझाए गए कमांड के स्थान पर )। किसी मौजूदा शाखा को संशोधित करने के लिए, अगला भाग देखें।

$ git remote add origin git@github.com:nikhilbhardwaj/abc.git

पहले से मौजूद रिपॉजिटरी को संशोधित करें

जैसा कि आप पहले से ही जानते हैं, HTTPS के बजाय SSH का उपयोग करने के लिए पहले से मौजूद रिपॉजिटरी को स्विच करने के लिए, आप रिमोट कंट्रोल को अपने साथ बदल सकते हैं .git/config फ़ाइल के ।

[remote "origin"]
    fetch = +refs/heads/*:refs/remotes/origin/*
    -url = https://github.com/nikhilbhardwaj/abc.git
    +url = git@github.com:nikhilbhardwaj/abc.git

एक शॉर्टकट set-urlकमांड का उपयोग करना है :

$ git remote set-url origin git@github.com:nikhilbhardwaj/abc.git

SSH-HTTPS स्विच के बारे में अधिक जानकारी


धन्यवाद, मैं उनके बारे में स्मार्ट https को डिफ़ॉल्ट बनाने के बारे में नहीं जानता था।
निखिल

3
यह विंडोज उपयोगकर्ताओं के लिए अच्छा हो सकता है, लेकिन लिनक्स पर यह काफी पीछे की ओर था: ssh हमेशा काम करता था, और स्मार्ट HTTPS के लिए नया पासवर्ड कैशिंग केवल विंडोज पर काम करता है। पर एक नोट Theres "कहाँ मैक संस्करण है?" लेकिन linux उपयोगकर्ताओं के लिए एक भी शब्द नहीं ।
MestreLion

मुझे यह जोड़ना चाहिए कि, यह विधि github के मैक क्लाइंट के साथ बिल्कुल भी हस्तक्षेप नहीं करती है। इसे बदलें और आप समस्या के बिना git के कमांड लाइन और gui संस्करण (github के क्लाइंट) दोनों का उपयोग कर सकते हैं।
केमल दाऊ

1
फिर set-urlसे मेरी मदद करो! आपका बहुत बहुत धन्यवाद !
गुज़्ज़कज़ू

181
  • GitHub

    git config --global url.ssh://git@github.com/.insteadOf https://github.com/
    
  • बिट बकेट

    git config --global url.ssh://git@bitbucket.org/.insteadOf https://bitbucket.org/
    

यह बताता है कि GitHub / BitBucket से कनेक्ट होने पर HTTPS के बजाय हमेशा SSH का उपयोग करें, इसलिए आप पासवर्ड के लिए संकेत दिए जाने के बजाय डिफ़ॉल्ट रूप से प्रमाणपत्र द्वारा प्रमाणित करेंगे।


4
अगर किसी को भी प्रलेखन में यह देखना चाहते हैं , तो खोजें url.<base>.insteadOf

2
सावधान रहें यह कुछ चीजों को तोड़ने के लिए लगता है - मैंने देखा है कि मैंने यह परिवर्तन करने के बाद होमब्रेव की कुछ कार्यक्षमता को काम करना बंद कर दिया है (अर्थात् गैर-डिफ़ॉल्ट संस्करण / शाखाएं स्थापित करना)
उपसर्ग

1
Gitlab के लिए: git config --global url.ssh: //git@gitlab.com/.insteadOf gitlab.com
MoOx

2
मुझे लगता है कि यह git config होना चाहिए - global url.ssh: //git@github.com: .insteadOf github.com , क्योंकि github git@github.com: <USERNAME> / <REPO> .IT को पसंद करता है। ( git config --global url.git@github.com:.insteadOf https://github.com/ईडीआईटी सुनिश्चित करने के लिए 2.7.4 में काम करता है।)
ग्लेन कीन

1
चूँकि यहाँ एक टिप्पणी में होमब्रेव समस्याओं का उल्लेख किया गया है, इसलिए इसे हटाने --globalऔर पीआर रेपो आधार पर ऐसा करना एक अच्छा विचार हो सकता है ।
पाइलिनक्स

58

ट्रेवर द्वारा प्रदान की प्रतिक्रिया सही है

लेकिन यहाँ आप सीधे अपने में जोड़ सकते हैं .gitconfig:

# Enforce SSH
[url "ssh://git@github.com/"]
  insteadOf = https://github.com/
[url "ssh://git@gitlab.com/"]
  insteadOf = https://gitlab.com/
[url "ssh://git@bitbucket.org/"]
  insteadOf = https://bitbucket.org/

2
बहुत सरल +1
PiersyP

+1 इस चाल के लिए। यह कर्नेल लोगों द्वारा भी अनुशंसित है। इसके अलावा कर्नेल newbies मेलिंग सूची पर git पुल देखें ।
20

बहुत क्लीनर समाधान - और गोलगप्पा परियोजनाओं के लिए बहुत अच्छा है, जहां "जाओ जाओ" को https के लिए चूक और एक व्यक्तिगत रूप से इसके बजाय यूआरएल को निजी
रिपोज

1
Gitlab के लिए: यदि आप पुश URL को प्रभावित करना चाहते हैं, लेकिन यह [url "ssh://git@gitlab.com/"] insteadOf = https://gitlab.com/भी है pushInsteadOfकि आप प्राप्त न करें। git remote -vप्रभावी URL का निरीक्षण करने के लिए उपयोग कर सकते हैं git उपयोग करने जा रहा है।
बेनी चेर्नियाव्स्की-पास्किन

यह कम से कम मौजूदा रिपॉजिटरी के लिए काम नहीं करता है।
एंड्रयू कोस्टर

4

आप गलती से ssh के बजाय https में रिपॉजिटरी को क्लोन कर सकते हैं। मैंने कई बार जीथब पर यह गलती की है। सुनिश्चित करें कि आप पहली बार ssh लिंक को कॉपी करते समय, क्लोनिंग के बजाय https लिंक को कॉपी करते हैं।


Ssh लिंक के साथ एक नया क्लोन करने की आवश्यकता है
codenamezero

आप HTTP से SSH के रेपो लिंक को भी बदल सकते हैं, अन्य उत्तर देख सकते हैं।
माइक लियोन

3

आपको https में नहीं ssh में क्लोन करने की आवश्यकता है।

इसके लिए आपको अपनी ssh कीज़ को सेट करना होगा। मैंने इसे तैयार करने वाली छोटी लिपि तैयार की है:

#!/usr/bin/env bash
email="$1"
hostname="$2"
hostalias="$hostname"
keypath="$HOME/.ssh/${hostname}_rsa"
ssh-keygen -t rsa -C $email -f $keypath
if [ $? -eq 0 ]; then
cat >> ~/.ssh/config <<EOF
Host $hostalias
        Hostname $hostname *.$hostname
        User git
    IdentitiesOnly yes
        IdentityFile $keypath
EOF
fi

और इसे चलाएं

bash script.sh myemail@example.com github.com

अपने दूरस्थ url को बदलें

git remote set-url origin git@github.com:user/foo.git

की सामग्री जोड़ें ~/.ssh/github.com_rsa.pubGshub.com पर अपनी ssh कुंजियों

कनेक्शन की जाँच करें

ssh -T git@github.com

0

SSH फ़ाइल

~/.ssh/config file
Host *
    StrictHostKeyChecking no
    UserKnownHostsFile=/dev/null
    LogLevel QUIET
    ConnectTimeout=10
Host github.com
        User git
        AddKeystoAgent yes
        UseKeychain yes
        Identityfile ~/github_rsa

पुन: नाम / .it / config संपादित करें

[remote "origin"]
        url = git@github.com:username/repo.git
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.