git服务器删除用户名和密码,核心操作分两类:本地清掉已保存的登录凭据,或在服务器端移除账号权限,对绝大多数开发者来说,遇到最多的是前者,即git push或clone时不再弹窗问密码,或者想切换账号却发现git死死记住旧账号。
git清除本地保存的账号密码:三种方法按场景挑
git把用户名密码存在哪,取决于你当初用什么方式连的服务器,HTTPS协议默认走凭据管理器(credential manager),SSH协议则靠密钥文件,下面按常见度排序,先说git credential manager的清理。
git credential-manager erase命令
这是最直接的方式,适用于Windows、macOS、Linux装了Git Credential Manager的场景。
操作路径:打开终端,输入以下两行,回车后git会删除当前仓库绑定的凭据。
git credential-manager erase
此时终端会进入等待输入状态,输入协议和主机名,再空行结束:
protocol=https
host=github.com
这里有个细节:host要填你实际连接的服务器地址,如果公司自建的GitLab,host就填gitlab.yourcompany.com。
git config –global –unset credential.helper
如果你只改了全局配置,没动系统的凭据管理器,这个方法更干净。
先查看当前的helper设置:
git config --global --list
找到credential.helper这一行后删除:
git config --global --unset credential.helper
执行后,git不再从配置文件读取凭据存储方式,下次push会重新询问用户名密码。
手动删除凭据文件
少数情况下,凭据存储在用户目录下的.git-credentials文件里,这个文件是明文存储的,位置一般在:
- Windows:C:Users你的用户名.git-credentials
- macOS / Linux:~/.git-credentials
删除或编辑这个文件即可,编辑后需要把对应的那行删掉,格式为http://用户名:密码@服务器地址。
git修改用户名的操作步骤:切换账号前先清缓存
这是git服务器删除用户名和密码的高频衍生问题,很多人改了远程仓库的账号,但push时依然报旧账号权限不足,就是因为git缓存里还躺着旧凭据。
第一步:查看当前用户信息
git config --global user.name git config --global user.email
注意,这里查的是提交作者信息,不是登录凭据,提交信息存在本地仓库的.git/config里,凭据存在系统级的凭据管理器里,两者是分开的。
第二步:清除旧凭据
跟上面方法一或方法三一样,先erase或者删掉.git-credentials文件,这一步不能省,否则git永远不会重新问你要新密码。
第三步:触发重新认证
随便git push一次,git会重新弹出用户名密码输入框,macOS用户注意,如果钥匙串里存过旧密码,弹窗可能被钥匙串自动填充顶掉,此时要去钥匙串访问(Keychain Access)里搜git或服务器域名,删掉对应条目。
git凭证存储机制:搞懂credential helper就掌握一半
行业共识认为,git的凭据存储机制是新手最容易踩坑的地方,git默认不保存密码,但你装Git客户端时,很多安装向导会顺手勾选Git Credential Manager,导致git自动把密码写进系统凭据库。
credential.helper的几种取值
| 取值 | 存储位置 | 适用场景 |
|---|---|---|
| manager | Windows凭据管理器 / macOS钥匙串 | 默认推荐,GUI弹窗 |
| store | 明文文件.git-credentials | 不推荐,密码裸奔 |
| cache | 内存缓存,默认15分钟 | 临时会话 |
| 不设置 | 每次手动输入 | 最安全,最烦 |
git config –global credential.helper manager在Windows上最常见,这也是为什么很多人总感觉git”偷偷”记住了密码。
如何检查当前用的是哪种helper
git config --global --get credential.helper
返回空就是不设置,返回manager就是走系统凭据管理器,返回store就是明文存储,这块内容跟git清除本地保存的账号密码强相关,搞懂配置才能精准清理。
服务器端删除账号权限:管理员视角的操作
如果你问的是git服务器端怎么删除一个用户的登录资格,这取决于服务器用的什么系统。
GitLab服务器删除用户
进入Admin Area → Users → 找到目标用户 → Edit → 最底部有Block和Delete按钮,Block是封禁,保留数据;Delete是彻底删除,连带他的项目和提交记录会受影响,删之前确认他的代码有没有被人接手。

Gitea / Gogs删除用户
站点管理 → 用户管理 → 选中用户 → 删除账户,这类轻量级Git服务器没有Block概念,删除即消灭,操作前最好导出该用户的仓库。
自建Git服务器(纯git命令)
如果服务器上只有裸仓库(bare repository),删除用户意味着删掉他的SSH公钥:
cd /home/git/.ssh
rm authorized_keys
或者编辑authorized_keys,删掉指定用户对应的公钥行,注意,如果多个人共用一个git账号,删公钥会误伤一群人,这种情况应该改用GitLab这类带用户体系的服务。
忘记git用户名密码的恢复路径
很多人问”git服务器删除用户名和密码是什么”时,实际遇到的是忘了密码,想重置或找回。
自建GitLab的密码重置
管理员可以在服务器上用Rails控制台重置:
sudo gitlab-rails console
user = User.find_by(email: 'admin@example.com')
user.password = '新密码'
user.password_confirmation = '新密码'
user.save!
这个命令在GitLab CE和EE版本上都适用,如果服务器用的是Gitea,直接去数据库改或者让用户在登录页点忘记密码,前提是SMTP邮件配置好了。
GitHub / 云厂商代码托管平台的密码找回
GitHub现在已经不支持密码push,全走Token或SSH,如果你用的是Gitee、CODING这类国内平台,找回密码在登录页底部的”忘记密码”入口,流程是邮箱验证后重置。
业内专家指出,2020年后主流代码托管平台陆续关闭密码认证,改用个人访问令牌(Personal Access Token)或SSH密钥,这带来一个常见问题:git push时提示输入用户名,但密码框不知道该填什么,实际上填的不是账号密码,而是Token。
清除凭据后git push输入用户名密码是什么逻辑
这个问题的本质是git在触发重新认证时的交互逻辑,当你清掉凭据后执行git push,git会按以下顺序寻找认证信息:
- 当前仓库的remote URL里有没有user:pass@前缀
- credential helper里有没有缓存
- 环境变量GIT_ASKPASS或core.askPass
- 终端交互输入
多数情况下,清完凭据后push,git会弹出GUI窗口或者终端提示输入,如果什么都没弹,检查remote URL:
git remote -v
如果URL写成http://用户名:密码@服务器地址/仓库.git

,密码硬编码在里面,清凭据没用,得改URL:
git remote set-url origin http://服务器地址/仓库.git
清理git缓存目录里的临时文件
还有一类隐藏的存储点:git的缓存目录,Windows下该目录位于:
C:Users你的用户名AppDataLocalGitCredentialManager
macOS下在:
~/Library/Preferences/com.gitcredentialmanager
这些目录下存着凭据的临时元数据,有时候erase命令清不干净,手动删掉整个目录再重新输入是最彻底的。
切换git用户后提交人还是旧名字:两个层级的区别
git服务器删除用户名和密码之后,提交记录里还带着旧用户名,这是另一个独立问题,前面说过,提交者信息存在本地配置里,跟认证凭据两码事。
修改单次提交的作者
git commit --amend --author="新用户名 <新邮箱>"
批量修改历史提交作者
这种情况下要重写历史:
git filter-branch --env-filter '
if [ "$GIT_AUTHOR_NAME" = "旧用户名" ]; then
export GIT_AUTHOR_NAME="新用户名"
export GIT_AUTHOR_EMAIL="新邮箱"
fi
' --tag-name-filter cat -- --branches --tags
注意,重写历史会把所有提交的hash值改变,如果仓库已经被其他人clone过,强推会造成他们的本地分支全部失联,这种操作仅适用于个人项目或团队已经确认可以强推的场景。
Q&A:关于git服务器删除用户名和密码的常见疑问
清除git凭据后为什么还是不用输密码?
检查remote URL是否包含明文账号密码,也就是http://用户名:密码@这种格式,git会优先使用URL内的凭据,其次检查系统凭据管理器(Windows的凭据管理器或macOS钥匙串)里是否还有残留条目,特别是Windows凭据管理器里Generic Credentials分类下的git:https://服务器地址条目。
git credential-manager erase和git config –unset的区别是什么?
前者删除的是已经存储的凭据具体值,后者删除的是存储凭据的配置开关,erase之后,git还会按原配置继续存储新密码;unset之后,git彻底不存储密码,每次push都会要求输入,两者不冲突,最彻底的清理方式是先erase再unset,最后检查.git-credentials文件是否还存在。
图片来源于AI模型,如侵权请联系管理员。作者:酷小编,如若转载,请注明出处:https://www.kufanyun.com/ask/719048.html

