Bitbucket git push授权失败求助:本地推送遭拒且提示工作树干净
解决Bitbucket推送时的两个常见问题:工作树干净提示与授权失败
嘿,我来帮你拆解这两个推送问题,都是Git对接Bitbucket时的典型坑,咱们一个个来解决:
一、提示「(use "git push" to publish your local commits) nothing to commit, working tree clean」
这个提示看似矛盾,其实核心原因无非两种情况:
你有已提交的本地commit还没推送到远程
先执行git status确认状态,如果看到类似「Your branch is ahead of 'origin/main' by 2 commits」的提示,说明本地已经完成提交,但还没推送到远程,直接执行git push origin <你的分支名>(比如git push origin main)即可。你误以为有需要推送的变更,但其实没完成add/commit流程
如果你确实修改了文件但没提交,先执行git add .(或者指定单个文件,比如git add README.md)把变更暂存,然后git commit -m "描述你的变更,比如:更新README内容",完成提交后再执行push。额外小坑:你在错误的分支上操作
用git branch看看当前分支(前面带*的就是当前分支),是不是和你要推送的远程分支对应?比如你要推main分支,但当前在dev分支,那先切换分支:git checkout main,再重复前面的步骤。
二、输入正确账号密码(甚至重置3次)仍被拒绝授权
这是因为Bitbucket早已停用账号密码直接用于Git推送的方式,现在必须用App Password或者SSH密钥,这是关键!给你两种解决方案:
方案1:使用App Password(推荐HTTPS方式用户)
- 登录Bitbucket账号,进入「Personal settings」(个人设置)
- 在左侧菜单找到「App passwords」,点击「Create app password」
- 给这个密码命名(比如「Git Push Password」),然后至少勾选「Repository」下的「Write」权限(如果需要其他权限可以按需勾选)
- 创建完成后,立刻复制这个密码(只会显示一次,一定要存好)
- 下次推送时,用户名填你的Bitbucket账号邮箱/用户名,密码填这个App Password,而不是你的账号登录密码
方案2:改用SSH密钥(免密码推送,更方便)
- 本地生成SSH密钥:打开终端执行
ssh-keygen -t ed25519 -C "你的Bitbucket绑定邮箱",一路回车用默认设置就行(不用设密码,除非你需要额外安全) - 复制公钥内容:
- Windows:执行
type ~/.ssh/id_ed25519.pub - Mac/Linux:执行
cat ~/.ssh/id_ed25519.pub
- Windows:执行
- 回到Bitbucket个人设置,找到「SSH keys」,点击「Add key」,把复制的公钥粘贴进去保存
- 修改远程仓库URL为SSH格式:执行
git remote set-url origin git@bitbucket.org:<你的用户名>/<仓库名>.git(替换成你自己的仓库地址) - 之后再执行
git push就不用输密码了,直接完成推送
额外排查点:清除旧凭据
如果之前Git保存了旧的账号密码,可能会自动填充导致失败:
- Windows:打开「凭据管理器」→「Windows凭据」,找到Bitbucket相关的条目删除
- Mac:执行
git config --global credential.helper osxkeychain,然后在钥匙串访问里删除Bitbucket的相关凭据 - Linux:检查
~/.git-credentials文件,删除对应的Bitbucket条目
内容的提问来源于stack exchange,提问作者Alex Marr
相关产品推荐
相关产品推荐

