下午打算试试gitlab-flow怎样用,弄了两个账号分别fork了主仓,在某个子仓库改完东西后发现我提交不了。用ssh方式的推送代码提示没有授权,看了一下发现用的key没有加上去gogs,后来打算在另一个号加上时提示已经被使用了,看来一个key不能多个号用。这时候问题来了,本地怎样实现不同仓库使用不同key呢?
不同远端使用不同ssh-key
要解决A仓库用A key,B仓库用B key的问题,重点在于ssh的使用上。
ssh能用代理的方式实现不同域用不同的设置,只需实现三步
第一步,设置ssh config
一般情况下在~/.ssh/
目录下是没有config文件的,这里先建文件再编辑:
1 | $ touch ~/.ssh/config |
然后键入设置的内容
1 | Host uxfeel.gogs #代理的域,之后配置远端就用这地址了 |
原来仓库链接是这样的:ssh://gogs@gogs.uxfeel.com:11233/packy/test.git
用上config后:ssh://uxfeel.com/packy/test.git
到这步可以测试一下是否能访问。
1 | $ ssh uxfeel.gogs |
输出下面这段就说明正常了。
1 | PTY allocation request failed on channel 0 |
第二步,载入你的key
部分git用户会用GUI工具来帮助使用(比如我),这一步载入key是为了给某些GUI工具提供授权的关键(跳过这步,GUI工具同步远端的时候会提示没有权限)。
1 | # 载入key到ssh-agent |
windows用户注意了
windows用户一般情况下都会使用上git-bash
(大佬请绕行),运行上面代码会出现提示ssh-agent
没有运行。这里需要让git-bash
运行的时候同时把ssh-agent
带上好了。
在~/.profile
加上以下代码
1 | env=~/.ssh/agent.env |
重新打开git-bash
,agent就会运行。第二步执行不了的代码现在就可以执行。
2020年3月19日更新:
gitkraken在windows下只支持
Pageant
作为ssh代理,事实是并不行,根本没有效果具体看这个issuevscdoe 用
ssh-agent
就能支持,先这样用着。
第三步,修改远端设置
ssh config设置好后,修改仓库远端链接就能正常使用了
1 | # 原来的 |
不同远端使用不同git用户提交
一般用git都离不开全局用户和email的设置这一步:
1 | $ git config --global user.name "packy" |
去掉--global
参数就可以给你当前仓库设置指定的用户信息了
1 | # 在 test 仓库目录下运行 |
设置后提交代码的操作用户就会变成test<test@126.com>
,通过这样设置就能给不同仓库用不同用户提交代码。
参考
- 不同项目配置不同的 Git 账号
- gitlab git ssh 配置多个帐户-不同git仓库使用不用的ssh key
- GIT配置多用户
- OpenSSH Config File Examples
- How to maintain ssh-agent login session with Windows 10’s new OpenSSH and PowerShell
- Gitkraken cannot use local SSH agent
- linux-gitkraken-use-local-ssh-agent
- Generating a new SSH key and adding it to the ssh-agent
- Working with SSH key passphrases
- Running SSH Agent when starting Git Bash on Windows
- SSH, HTTPS and Proxies – local-ssh-agent