最近线上部署的项目出现了很多问题,经过排查发现是之前很多工程部署的机器上使用的是个人的git账号。原来维护人员调到其他项目去了,后来修改了密码,导致很多工程都出了问题。修改代码后机器更新代码一直提示输入git密码。因为本地使用的是ssh方式更新代码,所以认证失败后就只提示输入密码。在网上查了很多种方式,大部分回答都一样,修改账号密码,就像下面方式:
git config --global user.name 用户名git config --global user.email 邮箱地址
结果当然是没有一点效果了。最后查出两种修改方式
https更新代码
使用https方式更新Git库代码,这样每次都会提示输入账号和密码,只要有权限的账号都可以更新。修改方式是在git目录的.git文件夹下,打开config文件,将url从ssh修改为https方式
[remote "origin"] url = https://github.com/xxxx/xxxx.git fetch = +refs/heads/*:refs/remotes/origin/
但是上面这种方式需要每次输入账号密码,这样不利于自动脚本执行,那么我们就需要使用免密方式更新了。
ssh更新代码
# 输入用户名git config --global user.name "yourname" # 输入邮箱git config --global user.email "youremail" # 消除由于Windows和Linux拼图中换行符的差异导致的问题git config --global core.autocrlf false # 消除由于路径或是文件名包含中文导致的乱码问题git config --global core.quotepath off# 消除gui界面中文乱码问题,如果只使用命令行的话不用设置这个git config --global gui.encoding utf-8# 配置ssh的秘钥,输完之后一路回车ssh-keygen -t rsa -C "youremail"# 启用ssh-agenteval `ssh-agent`# 添加秘钥ssh-add ~/.ssh/id_rsa# 将它添加到一直的key列表中ssh-add -l# 打开公钥文件,拷贝公钥,添加到自己的GitHub账户上去cat ~/.ssh/id_rsa.pub