我有2个bitbucket帐户:一个人,一个由我工作的公司所有。
我设置ssh配置文件并将ssh公钥放入我的个人帐户。
workspace(name = "projectA")
一切都很好。
Host perso-bitbucket
User git
Hostname bitbucket.org
IdentityFile ~/.ssh/perso-key
现在,我添加第二个ssh-key:
$myUsername: ssh -T perso-bitbucket
logged in as myUsername.
并将公钥添加到我的bitbucket帐户proUsername。
问题是如何对ssh / git使用哪个用户名?
Host pro-bitbucket
User git
Hostname bitbucket.org
IdentityFile ~/.ssh/pro-key
这里应该使用proUsername。即使我将git的用户设置为proUsername:
,它也不起作用$myUsername: ssh -T pro-bitbucket
logged in as myUsername.
答案 0 :(得分:0)
我遇到了同样的问题,最后写了一个处理它的bash脚本。你可以在recursive-gitconfig找到它。
我们的想法是根据git
强制.gitconfig
命令用作特定的cwd
文件。
因此,在父目录中为git
文件公开了一个bash .gitconfig
函数,并将第一个匹配作为git配置文件使用。
以下是我如何使用它:
档案~/.gitconfig
:
[user]
email = arnout@spam.bacon
name = Arount
[core]
editor = vim
[alias]
lol = log --graph --decorate --pretty=oneline --abbrev-commit
lola = log --graph --decorate --pretty=oneline --abbrev-commit --all
...
所以这是我的全局配置,我是 Arount 我有我的编辑器&别名已设定。
档案~/Work/.gitconfig
:
[include]
path = /home/me/.gitconfig
[user]
email = the-coporate-me@my-super-company.lol
name = My Real Me
所以我使用的任何地方git
我都是Arount,但在~/Work/
我是公司我。您可以创建多个图层(Work/compagny1
,Work/campgny2
),递归等。
您可以更新和覆盖每个 gitconfig
配置密钥。
这是代码,但我建议使用github link upper
#!/bin/bash
# Look for closest .gitconfig file in parent directories
# This file will be used as main .gitconfig file.
function __recursive_gitconfig_git {
gitconfig_file=$(__recursive_gitconfig_closest)
if [ "$gitconfig_file" != '' ]; then
home="$(dirname $gitconfig_file)/"
HOME=$home /usr/bin/git "$@"
else
/usr/bin/git "$@"
fi
}
# Look for closest .gitconfig file in parents directories
function __recursive_gitconfig_closest {
slashes=${PWD//[^\/]/}
directory="$PWD"
for (( n=${#slashes}; n>0; --n ))
do
test -e "$directory/.gitconfig" && echo "$directory/.gitconfig" && return
directory="$directory/.."
done
}
alias git='__recursive_gitconfig_git'
我建议将此文件复制为~/.recursive-gitconfig.sh
,并在source ~/.recursive-gitconfig.sh
的第一行中添加.bashrc
。