How do I get git to default to ssh and not https for new repositories

These days when I create a new repository on GitHub on the setup page I get:

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

And whenever I have to push a commit I need to enter my GitHub username and password.

I can manually change that to

git@github.com:nikhilbhardwaj/abc.git

in the .git/config . I find this quite irritating - is there some way I can configure git to use SSH by default?


Set up a repository's origin branch to be SSH

The GitHub repository setup page is just a suggested list of commands (and GitHub now suggests using the HTTPS protocol). Unless you have administrative access to GitHub's site, I don't know of any way to change their suggested commands.

If you'd rather use the SSH protocol, simply add a remote branch like so (ie use this command in place of GitHub's suggested command). To modify an existing branch, see the next section.

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

Modify a pre-existing repository

As you already know, to switch a pre-existing repository to use SSH instead of HTTPS, you can change the remote url within your .git/config file.

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

A shortcut is to use the set-url command:

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

More information about the SSH-HTTPS switch

  • "Why is Git always asking for my password?" - GitHub help page.
  • GitHub's switch to Smart HTTP - relevant StackOverflow question
  • Credential Caching for Wrist-Friendly Git Usage - GitHub blog post about HTTPS, and how to avoid re-entering your password

  • GitHub

    git config --global url.ssh://git@github.com/.insteadOf https://github.com/
    
  • BitBucket

    git config --global url.ssh://git@bitbucket.org/.insteadOf https://bitbucket.org/
    
  • That tells git to always use SSH instead of HTTPS when connecting to GitHub/BitBucket, so you'll authenticate by certificate by default, instead of being prompted for a password.


    The response provided by Trevor is correct.

    But here is what you can directly add in your .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/
    
    链接地址: http://www.djcxy.com/p/45224.html

    上一篇: 无法使用jgit将本地目录克隆到远程github存储库中

    下一篇: 如何让git默认使用ssh而不是https来访问新的软件仓库