配置

  1. 清空默认的全局 user.nameuser.email

    1
    2
    git config --global --unset user.name
    git config --global --unset user.email

    可通过一下命令查看全局 Git 配置的所有设置

    1
    git config --global --list
  2. 为不同的 git 账户生成不同的 ssh-key

    id_rsa 是默认的文件名称,我们现在需要生成不同的 ssh-key,所以要设置不同的文件存储对应的公钥,比如:私人的 GitHub 账户使用 id_rsa_Private 命名;公开的GitHub 账户使用 id_rsa_Public 来命名

    1
    2
    ssh-keygen -t rsa -f ~/.ssh/id_rsa_Private -C "[email protected]"
    ssh-keygen -t rsa -f ~/.ssh/id_rsa_Public -C "[email protected]"

    注意:输入完回车后会询问是否添加密码,可以直接回车

    上面的命令调用完后会生成四个文件:

    • id_rsa_Private
    • id_rsa_Private.pub
    • id_rsa_Public
    • id_rsa_Public.pub
  3. ssh-key 分别添加到 ssh-agent 信任列表

    ssh-add 命令用于将私钥添加到 SSH 代理 (ssh-agent) 中,这样您就不必每次使用 SSH 时都输入私钥密码。SSH 代理可以在您登录时启动,并在您的登录会话中一直运行,为您管理已解锁的私钥。这样,您就只需在每个新的登录会话中解锁一次私钥,而不必每次都输入私钥密码。这对于频繁使用 SSH 的用户来说非常Correção no código.方便。

    启动 SSH 代理

    1
    eval "$(ssh-agent -s)"

    添加私钥

    1
    2
    ssh-add ~/.ssh/id_rsa_Private
    ssh-add ~/.ssh/id_rsa_Public

    如果看到 Identitiy added: ~/.ssh/id_rsa_Private,就表示添加成功了。

  4. 将公钥配置到对应的github账号中

    公钥.pub文件可以直接用文本打开,内容粘贴到github的Settings -> SSH and GPG keys -> New SSH Key,Title随便起,自己能认出来即可,Key里面填写复制的.pub里的内容,这样公钥就配置好了

  5. config 文件中配置多个 ssh-key

    在 .ssh/ 目录下,找到config文件(没有的话新建一个,之前的ssh-key也在这个目录)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #Private 私人账户
    Host Private.github.com
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_rsa_Private

    #Public 公开账户
    Host Public.github.com
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_rsa_Public

    config文件部分参数含义,仅做记录

    1
    2
    3
    4
    5
    6
    # Host: 主机别名
    # HostName: 托管平台域名地址,如github.com
    # IdentityFile: 该Host私钥文件
    # User: 托管平台用户名
    # Port: 端口号,可不填(如果不是默认22号端口则需要指定)
    # PreferredAuthentications publickey
  6. 测试

    测试:ssh -T git@{config里面的user}.xxx主机名

    1
    2
    ssh -T [email protected]
    ssh -T [email protected]

    出现以下,则说明成功!

    1
    Hi xxx! You've successfully authenticated, but GitHub does not provide shell access.

    此时私钥公钥 都配置正常了

使用

  1. 配置当前仓库账号

    注意:在不同的代码仓库进行代码提交时,记得检查用户名和邮箱,以免混淆。

    在上面操作中为了配置多个账户,取消了全局 user.nameuser.email,现在需要为每个仓库单独配置,这样做的好处就是可以将两个GitHub账户的仓库分开管理,只在当前仓库中生效,不会影响其他仓库。

    • 全局配置: 对于用户在计算机上的所有 Git 仓库都生效,是全局默认设置。
    • 用户配置: 对于当前用户在当前仓库生效,会覆盖全局配置。
    • 本地配置: 只在当前仓库中生效,会覆盖用户配置和全局配置。

    为当前仓库设置本地配置

    1
    2
    git config --local user.name xxx
    git config --local user.email [email protected]

    查看当前仓库本地配置

    1
    2
    3
    4
    5
    git config user.name     //查看当前 Git 仓库的用户名
    git config user.email //查看当前 Git 仓库的邮箱

    git remote -v //查看当前 Git 仓库的远程仓库信息
    git log -1 --format='%an <%ae>' //查看最近提交的提交者信息
  2. 使用不同的github账户clone仓库

    必须使用SSH方式clone。SSH类型的链接格式为:[email protected]:github用户名/仓库名.git

    若要使用不同的github账户clone仓库,则github.com这一部分更改改为上面教程中的config文件中的Host部分

    1
    2
    3
    [email protected]:github用户名/仓库名.git

    [email protected]:github用户名/仓库名.git

注意

  1. 配置多个 github 账户后,像 hexo 这样的,需要修改 git 地址,打开博客 Hexo 目录下的 _config.yml 文件,找到deploy关键字,将 [email protected] 修改为上方所设置的Host部分,比如 [email protected]

参考