多个 git 帐户:不使用 .ssh/config 或 SSH 代理
Posted
技术标签:
【中文标题】多个 git 帐户:不使用 .ssh/config 或 SSH 代理【英文标题】:Multiple git accounts: no .ssh/config or SSH agent usage 【发布时间】:2020-06-13 16:16:59 【问题描述】:我想使用多个 Git 服务器帐户(使用 GitHub、GitLab、BitBubket 等中的任何一个)。
帐户通过其电子邮件地址 name1@email1.com 和 name2@email2.org 和 git 设置为在相关的 仓库
以下限制适用于“更改帐户工作流程”:
-
不接触/更改 SSH 配置文件(例如
~/.ssh/config
等)时
添加/删除/更改存储库或服务器。
不需要运行 SSH 代理,即没有 ssh-add ...
。
无需更改环境变量。
不更改git clone <address>
指令。
将与 git 一起使用的 SSH 密钥与其他 SSH 密钥隔离开来。
在所有私有和公共存储库中使用相同的“更改帐户工作流程”。
“更改帐户工作流程”是一 (1) 个步骤/命令。
“更改帐户工作流程”是每个存储库一 (1) 次(即不是每个
时间您开始在存储库上工作)。
初始存储库设置(也是一次性活动)可能涉及超过 一步。 任何约定/假设都是可以接受的,只要它们不违反 约束。
不相关的问题:
这些是不满足约束条件的响应。
它们通常需要更改 ~/.ssh/config
和/或涉及 SSH 代理守护进程:
-
handle-multiple-git-account
using-multiple-git-accounts
multiple-git-accounts-and-ssh-key
multiple-github-accounts-ssh-config
multiple-git-users-on-same-machine
multiple-github-accounts-with-git-in-windows
git-multiple-accounts-and-repository-problems
ssh-config-to-access-multiple-repo-not-working
multiple-github-accounts-on-the-same-computer
can-i-specify-multiple-users-for-myself-in-gitconfig
setting-up-ssh-config-file-for-multiple-codebase-accounts
how-can-i-push-git-with-multiple-accounts-on-one-machine
multiple-github-accounts-what-values-for-host-in-ssh-config
how-to-configure-multiple-github-accounts-on-your-computer
ssh-config-with-multiple-keys-for-multiple-gitlab-user-accounts
github-multiple-accounts-permission-to-personalusername-reponame-git-denied-to
【问题讨论】:
【参考方案1】:测试和工作:
一步“更改帐户工作流程”:
您在克隆后执行一次 - 对于任何拥有 已设置为支持使用多个 git 帐户提交的开发人员。
git config --local --add include.path ../.git-config
现在,无论何时从该存储库提交/推送,您都将使用该存储库的帐户。 搬家时无需进行任何进一步的更改 进入/退出此存储库。
一步设置。
这就是您"设置以支持使用多个提交的开发人员的方式 git 帐户”:
-
克隆存储库并 Git 提交:
pushd /src/path/to/git/repo
tee --append .git-config > /dev/null <<'EOF'
[core]
sshCommand = ssh -o StrictHostKeyChecking=no -o GlobalKnownHostsFile=/dev/null -o UserKnownHostsFile=/dev/null -o IdentitiesOnly=yes -i ~/.config/git/$(git config --get --local --includes user.email) -F /dev/null
EOF
popd
假设:
SSH 密钥文件被命名为<name@email.com>
(私有)和<name@email.com>.pub
(公开)。
SSH 密钥文件可以位于任何可通过 SSH 命令访问的位置。
注意:
不使用多个帐户的用户不受此影响。
他们只是在克隆后没有 Git 包含.git-config
sn-p。
顺便说一句:SSH 密钥文件的位置是 XDG Base Directory specification,但您可以将 SSH 密钥放在最安全的地方,而不必更改 SSH 配置文件。
问题表明 Git 设置为使用用于命名 SSH 密钥文件的电子邮件地址进行提交,所以这已经完成了,但为了完整性:
git config --local user.email name1@email1.com
【讨论】:
以上是关于多个 git 帐户:不使用 .ssh/config 或 SSH 代理的主要内容,如果未能解决你的问题,请参考以下文章
Windows 的 .ssh/config 文件 (git)
如何通过 Windows Git 凭据管理器使用多个 Git 帐户