配置
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
如果结果显示都是所对应的用户,那么就配置完成了。