如何为一个仓库覆盖全局Git凭据?

9
如果我设置

git config --global credential.username my_username

使用 --local 选项覆盖全局设置后,仍然无法为一个特定的仓库使用本地凭据来提交或推送。如何解决这个问题?


你确定仓库的 .git/config 文件已经更新了吗? - chepner
@chepner 是的,它包含使用 --local 选项设置的 username - joval
1
在这种情况下,我发现使用编辑器打开 ~/.gitconfigmyproject/.git/config 更加方便。它会准确地显示您设置的选项,而且语法相当自解释。 - cmaster - reinstate monica
2个回答

6

对我来说,仓库本地配置不起作用。经过从stackoverflow尝试了各种方法之后,最终通过从ssh切换到https并使用credential.helper使其工作:

步骤1,将git远程更改为https:

$ git remote -v
    git@github.com:#####/###.git (push)

$ git remote rm origin
$ git remote add origin https://username@github.com/######/###.git

步骤 2:credential.helper 帮助记住密码,避免重复烦人的询问。

$ git config --global credential.helper cache
$ git config --global credential.helper 'cache --timeout 7200'

默认情况下,凭据将保存在 ~/.git-credentials 文件中。该文件将被创建并写入。

但请注意,使用此帮助程序会将您的密码明文存储在磁盘上,仅受文件系统权限保护。如果这可能不是可接受的安全权衡,请注意。


1

credential.username

如果没有为网络身份验证设置用户名,则默认使用此用户名

可能您已经在--global上配置了user.name,因此--local上的credential.username未被使用。请尝试以下操作:

git config --local user.name my_username

2
这个设置用于提交时,但推送仍然使用全局凭据设置。 - joval

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接