git - 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
我的推送是由而不是由GithubUserName
or创作的BitbucketUserName
。运行ssh -T
显示两个 SSH 密钥都已正确连接。
编辑:通过在相应的存储库中进行修复
$ git config user.name = "myusername"
$ git config user.email = "my email"
但是,看起来我每次克隆新存储库时都必须这样做,有没有办法设置它以便我不必这样做?
解决方案
制作一个小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
你会准备好的。
推荐阅读
- excel - 如何添加过滤参数不存在的消息
- java - 正则表达式删除价格输入的美元符号和尾随零
- php - 来自 PHP 的 MySQL 查询仅执行第一个查询
- java - 根据 XSD 架构创建 XML 文件
- python - if 语句:“IndexError:列表索引超出范围”
- google-cloud-platform - GCS 似乎阻止了我的 IP
- java - 使用 IntelliJ 在 WebLogic 10.3 上部署时出现 Jsp 错误
- angular - AngularFire2(firestore)需要像实时数据库一样一次设置多个文档
- python - Comparing values in one dictionary with values from another dictionary in Python
- php - Google API 数据传输插入(Google 云端硬盘):说已完成,但实际上什么也没发生