最近线上部署的项目出现了很多问题,经过排查发现是之前很多工程部署的机器上使用的是个人的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-agent eval `ssh-agent` # 添加秘钥 ssh-add ~/.ssh/id_rsa # 将它添加到一直的key列表中 ssh-add -l # 打开公钥文件,拷贝公钥,添加到自己的GitHub账户上去 cat ~/.ssh/id_rsa.pub