【问题标题】:How to switch between two git accounts on same device, in the Terminal (WSL2)?如何在终端(WSL2)中在同一设备上的两个 git 帐户之间切换?
【发布时间】:2021-10-16 19:57:03
【问题描述】:

我创建了两个独立的 GitHub 帐户。

我还使用相同的设备为他们生成了两个单独的 SSH 密钥。

当我在终端输入git config user.name 时,输出显示USERNAME2

我现在想在帐户 1 中工作,所以我输入了 git config --global user.name "USERNAME1 并为电子邮件做了同样的事情。

但我认为它并没有真正切换帐户,只是重命名了我的用户名或其他什么?我认为这是因为当我尝试在帐户中创建一个新的 repo 时,对于所有 git 命令,我一直收到fatal: not a git repository (or any of the parent directories): .git 错误,这是我以前从未遇到过的,当时我只有一个帐户正在运行。

我的 SSH 密钥位于两个不同的文件夹中(对于 account1,它位于主目录中的 .ssh 中,对于 account2,它位于主目录中的 .newssh 文件夹中)。

我该怎么办?

【问题讨论】:

    标签: git github command-line windows-subsystem-for-linux wsl-2


    【解决方案1】:

    我现在想在账户 1 中工作,所以我输入了git config --global user.name "USERNAME1"

    这与远程 Git 服务器身份验证无关。
    它只设置本地提交作者身份。

    要使用不同的帐户,您需要不同的远程 URL,每个 URL 都设置为使用正确的私有 ssh 密钥进行远程身份验证。

    这是通过~/.ssh/configas shown here 完成的。

    Host github2
    HostName github.com
    User git
    IdentityFile /home/me/.newssh/key2
    

    它假设:

    • 您拥有git init myProjectFolder,以便在ProjectFolder 内工作

    • 您在Projectfolder 中设置了正确的远程 URL

        git remote add origin github2:<me>/myProject
      

    一步一步,假设在 WSL2 中有一个活动的 shell 会话(将名称更改为对您更有意义的名称)

    1. 生成 SSH 密钥,每个帐户一个
    cd ~/.ssh
    ssh-keygen -t rsa -P "" -f account1
    ssh-keygen -t rsa -P "" -f account2
    
    1. 将 account1.pub 和 accuont2.pub 注册到各自的 GitHub 帐户:参见“Adding a new SSH key to your GitHub account

    2. 设置~/.ssh/config

    Host account1
      HostName github.com
      User git
      IdentityFile ~/.ssh/account1
    Host account2
      HostName github.com
      User git
      IdentityFile ~/.ssh/account2
    
    1. 使用正确的 URL(以及正确的帐户)克隆您的存储库
    cd
    git clone account1:<NameAccount1>/<Repo1>
    git clone account1:<NameAccount2>/<Repo2>
    

    &lt;...&gt; 是占位符值,要被替换:不要保留&lt;&gt;

    1. 在每个存储库中,设置正确的提交权限
    cd ~/<repo1>
    git config user.name <NameAccount1>
    git config user.email <NameAccount1@email.com> # the one registered with GitHub
    
    cd ~/<repo2>
    git config user.name <NameAccount2>
    git config user.email <NameAccount2@email.com> # the one registered with GitHub
    

    在这些步骤之后,每次提交都将使用正确的 GitHub 帐户完成,并推送到正确的 GitHub 存储库。

    【讨论】:

    • 我认为这会有所帮助!您能否链接一步一步的过程?我没有很多技术上的复杂性,我真的很重视这方面的任何帮助。提前致谢!
    • @Worker1432 当然可以。我已经编辑了答案以添加分步过程。
    • 在继续之前是否需要删除现有的 SSH 密钥和本地 ssh 文件?
    • @Worker1432 不一定,但如果这有效,您确实需要进行一些清理。
    • 您已经为同一个命令编写了多行代码(例如,在第一步中,您同时创建了两个 SSH 密钥)。我是按原样复制并粘贴到命令行中,还是单独粘贴? (我是否需要在引号内输入任何自定义详细信息,或使用任何其他相关详细信息重命名“account1”和“account2”?)
    【解决方案2】:

    您只能使用一个 ssh 密钥,只需将 pub 密钥添加到两个 github 帐户即可。

    【讨论】:

    • 但这不是最佳做法,不是吗?单独的密钥意味着获得一个密钥的访问权限不会让您访问两个 GitHub 帐户。
    • 它们共享相同的公钥。但即使别人得到你的公钥。他们不能用它来登录,除非他们也得到你的私钥。所以我认为这正是 key 的工作原理。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-24
    • 1970-01-01
    • 2011-08-12
    • 1970-01-01
    • 2012-10-19
    • 2011-11-24
    • 2018-07-04
    相关资源
    最近更新 更多