首页 > 解决方案 > git push 为不同账户设置 ssh 密钥后使用默认用户名

问题描述

我最近设置了 SSH 密钥来管理我的两个 git 帐户(bitbucket 和 github)。但是,每当我推送提交时,这些推送的作者都是我的计算机名称,而不是我用于每个帐户的相应用户名

这是我的配置文件:

#Github
Host github.com
  HostName github.com
  User git
  IdentityFile ~/.ssh/githubssh
  IdentitiesOnly yes

#Bitbucket
Host bitbucket.org
  HostName bitbucket.org
  User git
  IdentityFile ~/.ssh/bitbucketssh
  IdentitiesOnly yes

MyName我的推送是由而不是由GithubUserNameor创作的BitbucketUserName。运行ssh -T 显示两个 SSH 密钥都已正确连接。

编辑:通过在相应的存储库中进行修复

$ git config user.name = "myusername" 
$ git config user.email = "my email"

但是,看起来我每次克隆新存储库时都必须这样做,有没有办法设置它以便我不必这样做?

标签: gitssh

解决方案


制作一个小shell脚本(我们称之为git-be):

#!/bin/sh
persona=$1
. $HOME/.config/git-be/$persona
git config user.name "$PERSONA_NAME"
git config user.email "$PERSONA_EMAIL"

将其放入您的$PATH并使其可执行。

在以下位置创建一对角色文件~/.config/git-be

mkdir -p ~/.config/git-be

cat > ~/.config/git-be/github <<EOF
PERSONA_NAME="GitHub Name"
PERSONA_EMAIL=github_name@example.com
EOF

cat > ~/.config/git-be/bitbucket <<EOF
PERSONA_NAME="BitBucket Name"
PERSONA_EMAIL=bitbucket_name@example.com
EOF

现在,您可以在存储库中键入:

git be github

或者:

git be bitbucket

你会准备好的。


推荐阅读