285

这些天,当我在 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. 我觉得这很烦人 -有什么方法可以将 git 配置为默认使用 SSH?

4

8 回答 8

391

将存储库的源分支设置为 SSH

GitHub 存储库设置页面只是一个建议的命令列表(GitHub 现在建议使用 HTTPS 协议)。除非您对 GitHub 的站点具有管理权限,否则我不知道有什么方法可以更改他们建议的命令。

如果您更愿意使用 SSH 协议,只需像这样添加一个远程分支(即使用此命令代替GitHub 建议的命令)。要修改现有分支,请参阅下一节。

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

修改预先存在的存储库

如您所知,要将预先存在的存储库切换为使用 SSH 而不是 HTTPS,您可以更改.git/config文件中的远程 URL。

[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 开关的更多信息

于 2012-06-26T05:19:52.527 回答
269
  • 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/
    

这告诉 git 在连接到 GitHub/BitBucket 时始终使用 SSH 而不是 HTTPS,因此默认情况下您将通过证书进行身份验证,而不是提示输入密码。

于 2014-02-25T22:36:09.607 回答
92

Trevor 提供的答复是正确的

但这是您可以直接添加的内容.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/
于 2016-04-08T13:27:40.793 回答
6

您需要在 ssh 中克隆,而不是在 https 中。

为此,您需要设置 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

更改您的远程网址

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

将内容添加~/.ssh/github.com_rsa.pub到 github.com 上的 ssh 密钥

检查连接

ssh -T git@github.com
于 2014-04-04T16:08:55.537 回答
4

您可能不小心在 https 而不是 ssh 中克隆了存储库。我在github上多次犯过这个错误。确保在克隆时首先复制 ssh 链接,而不是 https 链接。

于 2015-01-26T21:42:55.920 回答
1

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

编辑 reponame/.git/config

[remote "origin"]
        url = git@github.com:username/repo.git
于 2019-10-15T15:10:54.423 回答
1

仅供参考 - 由于 github 不再允许 ssh,我正在使用它:

[url "git@github.com:"]
    insteadOf = https://github.com/
[url "git@gist.github.com:"]
    insteadOf = https://gist.github.com/
于 2021-11-09T23:28:45.047 回答
0

虽然这里的其他答案直接回答了名义上的问题(以一种我不知道的方式是可能的!TIL 一些新的东西git!)关于自动将https基于遥控器git+ssh的遥控器变成一个,但从开始git是不给https网址。

GitHub(以及其他流行的 git 托管服务)总是有一个小按钮,可以让您获取git应该克隆的 URL。你只需要点击小的“SSH”按钮:

获取现有项目的 SSH url 的示例

或者对于一个新项目

获取新项目的 SSH url 的示例

一旦您选择“SSH”选项,GitHub(和其他人)将记住(只要您登录)并在未来将其设为默认值。

于 2021-09-24T19:44:18.947 回答