【问题标题】:Script to make switching between github accounts easier?使 github 帐户之间的切换更容易的脚本?
【发布时间】:2026-02-14 03:10:01
【问题描述】:

我使用 ssh 密钥对设置了两个 github 帐户。可能会变得烦人的是我必须为每个 repo 设置 user.name 和 user.email。我想要这样的东西:

git switch {account}

我不认为 git 提供这样的东西,所以我想制作一个 .bat/.sh 脚本来在帐户之间切换。我如何打开一个文件(如 ~/account1)并从中读取数据(在 .bat / .sh 中)

【问题讨论】:

    标签: git batch-file sh


    【解决方案1】:

    user.name/user.email 与推送到 GitHub 的账号无关。

    它们只影响提交作者在 GitHub 上的显示方式

    并且无论如何都可以在每个存储库中设置该配置,这意味着您在切换存储库时不必更改它。

     cd /path/to/repo1
     git config user.name account1
     git config user.email account2
    

    注册到 GitHub 帐户的公钥是对您进行身份验证的那个。

    您的~/.ssh/config 文件可以为正确的 repo 引用正确的密钥,如“How to work on personal GitHub repo from office computer whose SSH key is already added to a work related GitHub account?”中所述

    您需要相应地更改远程 repo URL:

    cd /path/to/local/repo
    git remote set-url origin github1:account1/repoA
    

    github1”是引用正确公共 ssh 密钥的 Host 名称部分。

    【讨论】:

    • 我也是这么想的。推送 account2 时(我之前使用过带有 https 的 account1,因此这就是全局 user.name 和 user.email)我会进行身份验证,输入关键字,但仍然使用 account1 推送。只有在更改 user.name 和 user.email 之后,我才会推送表单 account2。
    • @robert 在您的情况下无需使用带有密码的 ssh 私钥。再说一遍,user.name/email 与推送的账号无关。
    • 我是如何使用链接到完全不同的 ssh 密钥的帐户推送的?我推送了,它要求我输入 id_rsa_account2 的关键词,但仍然使用 account1 推送
    • @robert 您的远程 URL(执行 git remote -v 时显示)实际上是 SSH 的吗?还是 HTTPS 的?
    • @robert 当你执行git config -l --show-origin 时,你看到任何insteadOf 指令吗?