为什么每次切换项目时都必须执行“eval”和“ssh-add”?

为什么每次切换项目时都必须执行“eval”和“ssh-add”?

我的~/.ssh/config文件中确实有两个不同的 GitLab 帐户。它们都以不同的名称命名Host,并引用Hostnamegitlab.com

每次我在不同 GitLab 帐户的编码项目之间切换时,我必须执行以下操作:

$ eval "$(ssh-agent -s)"
$ ssh-add ~/.ssh/<ssh-key-for-GitLab-account-of-actual-project

我在这里读过eval 和 ssh-agent 命令起什么作用?,它与 Docker 有关,但就我而言,它只在我的本地机器上。

有没有办法,避免一直插入这两个命令?

答案1

我尝试过@JavIon 提供的方法:
https://medium.com/uncaught-exception/setting-up-multiple-gitlab-accounts-82b70e88c437

在我的系统上,我做了一些微调。

第一步:
进入您使用 Git 的本地目录。就我而言,我将 Git 与 GitLab 结合使用。
我的工作目录中有一些 git 存储库和一些常规文件和目录 - 在我的私人目录中也是如此。
我在每个目录中都创建了一个 .gitignore 文件。

工作:

#------------------------------------------#
#         .gitconfig GitLab Work           #
#------------------------------------------#


[user]
    name     = My name for commits at work
    email    = [email protected]
    username = Work GitLab username

私人的:

#------------------------------------------#
#        .gitconfig GitLab Private         #
#------------------------------------------#


[user]
    name     = My name for commits at private
    email    = [email protected]
    username = Private GitLab username

第二步:
进入你的主目录并打开 .gitconfig(如果没有,请创建一个)。
然后从你的目录中包含 .gitconfig 文件,但主目录中除外。

〜/ .gitconfig:

#-----------------------------------#
#        .gitconfig Global          #
#-----------------------------------#


#----------------- Work GitLab
[includeIf "gitdir:~/work/"]
    path = ~/work/.gitconfig


#----------------- Private GitLab
[includeIf "gitdir:/~/private/"]
    path = ~/private/.gitconfig

第三步:
进入本地 Git 存储库并在所有存储库中添加特定的 SSH 密钥。

ssh-add ~/.ssh/<your key>

对我来说,无需注销或重新启动即可完成此操作。

相关内容