我正在尝试在 Ubuntu 18.04 上使用 2 个 github 帐户。我还使用个人访问令牌 (PAT)。按照我想要实现的设置。
- 有 2 个 github 帐户 - 主帐户和在同一台电脑上工作。
- 该目录内创建的所有存储库
~/work/
必须自动使用工作名称和电子邮件进行提交,而该目录之外的所有存储库必须使用主名称和电子邮件进行提交。 - 使用 libresecret 记住两个帐户(主帐户和工作帐户)的个人访问令牌,以便将数据从本地推送到 github。
- 使用个人访问令牌而不是 ssh。
- 保存每个帐户的凭据而不是每个存储库(就像使用
useHttpPath
.
这就是我所做的。
第1步:添加github主账户
$ git config --global user.name "Johnny"
$ git config --global user.email [email protected]
$ sudo apt install libsecret-1-0 libsecret-1-dev
$ cd /usr/share/doc/git/contrib/credential/libsecret/
$ sudo make
$ git config --global credential.helper /usr/share/doc/git/contrib/credential/libsecret/git-credential-libsecret
上面的内容允许我将代码推送到我的主 github 帐户,而无需一次又一次输入我的用户名和密码。我只需要输入一次,然后 libsecret 就会接管。
~/.gitconfig
到这一点。
[user]
name = Johnny
email = [email protected]
[credential]
helper = /usr/share/doc/git/contrib/credential/libsecret/git-credential-libsecret
第 2 步:添加工作帐户
我希望~/work/
目录内的所有存储库都与第二个 github 帐户关联。我进行以下更改 -
全局配置~/.gitconfig
[user]
name = Johnny
email = [email protected]
[credential]
helper = /usr/share/doc/git/contrib/credential/libsecret/git-credential-libsecret
[includeIf "gitdir:~/work/"]
path = ~/work/.gitconfig
工作特定配置~/work/.gitconfig
[user]
name = John Doe
email = [email protected]
现在,当我尝试推送我的工作代码时,出现以下错误。
remote: Permission to work_username/mywork.git denied to main_username.
fatal: unable to access 'https://github.com/work_username/mywork.git/': The requested URL returned error: 403
我通过拆分同一主机运行的多个存储库的凭证管理来解决这个问题。
$ git config --global credential.github.com.useHttpPath true
最终的~/.gitconfig
:
[user]
name = Johnny
email = [email protected]
[credential]
helper = /usr/share/doc/git/contrib/credential/libsecret/git-credential-libsecret
[includeIf "gitdir:~/work/"]
path = ~/work/.gitconfig
[credential "github.com"]
useHttpPath = true
问题
问题是,我必须为我创建的每个新存储库设置用户名和密码。帖子说我可以使用它,而不必每次都输入密码。
如何让我libsecret
知道git
根据存储库所在的目录使用不同的密码进行身份验证?使用 的提交名称/电子邮件已经发生这种情况IncludeIf
。我也想以某种方式将其扩展到密码身份验证。