Skip to content

配置

1. 安装Git之后没有命令补全

先查看Git版本:

git version

替换下面的下载链接的版本号,从源码下载补全脚本(这里使用了 GitHub 镜像加速网站):

https://raw.fastgit.org/git/git/v2.26.2/contrib/completion/git-completion.bash

放到对应的目录下并修改后缀为 sh

cp git-completion.bash /etc/bash_completion.d/git-completion.sh

使之生效:

. /etc/bash_completion.d/git-completion.sh

2. http协议配置持久性认证

2.1 Linux

当使用 http 协议和远程仓库相连时,Linux 上的 Git 跟远程仓库交互的每次操作都要输入用户名密码,很是麻烦,使用下面的配置方法可以存储认证信息,达到无需输入的目的。

新建认证文件,本文是 ~/.gitlab.pass,内容格式如下:

http://<用户名>:<密码>@<仓库主机的域名或IP地址>:<仓库主机的端口号>

例如:

http://ignorantshr:XXXXXX@mine.gitlab.com:8099

然后配置 Git 的认证处理:

git config --global credential.http://mine.gitlab.com:8099.helper "store --file ~/.gitlab.pass"

注意http://mine.gitlab.com:8099是和远程仓库的URL前缀相匹配的,只有远程仓库地址所匹配的 Git 仓库才会使用此认证文件,比如:http://mine.gitlab.com:8099/test/test.git就会匹配此认证信息。

其它细节:

  • 多个 credential.xxx.helper 可以使用同一个认证文件

  • 可以直接执行配置 Git 的认证处理指令,这样只需要输入一次正确的用户名和密码,而无需担心认证文件内容写错

取消配置命令:

git config --global --unset credential.http://mine.gitlab.com:8099.helper

2.2 windows

windows只有在第一次才会需要输入认证信息,以后就会自动保存而无需输入,但是如果认证信息写错了,可以到这里去找到对应的文件修改:控制面板\用户帐户\凭据管理器

3. 多用户认证

当使用 ssh-add 添加多个私钥(分属不同的用户)时,即使GitHub已经添加了多个对应的公钥,也可能会出现认证不匹配的情况,此时需要测试一下认证的到底是哪个用户:

ssh -T git@github.com

列出当前托管的私钥:

ssh-add -l

这种情况下可以通过重新执行 ssh-add 命令添加你所需要认证的私钥,然后就可以使用其进行GitHub认证。但是这种切换非常麻烦,不如使用下面的方法进行配置进行自动匹配认证。

编辑~/.ssh/config文件:

Host gh-company
HostName github.com
IdentityFile ~/.ssh/id_ecdsa_company
PreferredAuthentications publickey
User account-company

Host gh
HostName github.com
IdentityFile ~/.ssh/id_ecdsa
PreferredAuthentications publickey
User ignorantshr

配置说明:

  • Host:别名。配置远程仓库URL时必须使用别名替换HostName中的字段,否则可能还会出现认证不匹配的情况。

  • HostName:真实的主机名。

  • IdentityFile:私钥文件。

  • PreferredAuthentications:认证方式。

  • User:账户名。

测试:

ssh -T git@gh-company
ssh -T git@gh

如果结果显示都是所对应的用户,那么就配置完成了。