【Git提交remote rejected】

Git使用

Git邮箱变更导致的push报错

使用git提交代码时,如果使用旧的git设置的user.name和user.email,进行commit,那么当最后进行push时,会报错,如下:

bash 复制代码
PS C:\Users\xxx\>     git push --set-upstream origin master
Enumerating objects: 16, done.
Counting objects: 100% (16/16), done.
Delta compression using up to 12 threads
Compressing objects: 100% (11/11), done.
Writing objects: 100% (16/16), 4.51 KiB | 576.00 KiB/s, done.
Total 16 (delta 0), reused 0 (delta 0), pack-reused 0 (from 0)
remote: You can only push your own commits in this repository
remote: Commit xxxx was committed by 旧name <旧邮箱>
To https://xxx/xxx/xx.git
 ! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to https://xxx/xxx/xx.git'

原因分析

当前的 commit 是用 旧邮箱 xxxx 提交的。

你的 Bitbucket 仓库启用了 "仅允许用户推送自己提交的 commit" 的安全策略(pre-receive hook)。

虽然你已修改 Git 配置为新邮箱,但 commit 的 author 信息未更新,Git 仍认为该 commit 是"别人"提交的。

解决方法

首先,可以在terminal修改全局的name和email,保证后续的提交不再出现类似问题:

bash 复制代码
git config --global user.name "Your New Name"
git config --global user.email "your.email@example.com"

然后,针对已经commit的内容,修改提交的name和email

bash 复制代码
git commit --amend --author="xxxx <xxxx>" --no-edit

注意:必须包含 < 和 >,且 email 不能有空格。

最后,再push下即可

bash 复制代码
 git push --force-with-lease origin maste
相关推荐
A-Jie-Y9 小时前
Git基础-核心概念与常用命令
git
夜珀10 小时前
Git基础修炼手册:在AtomGit上玩转版本控制
git
golang学习记10 小时前
Zed IDE官宣新招:Git Graph 正式支持!
ide·git
要记得喝水10 小时前
适用于 Git Bash 的脚本,批量提交和推送多个仓库的修改
git·elasticsearch·bash
AI_Claude_code11 小时前
专栏导论:开源项目贡献的价值与Git工作流全景图
git·开源
never forget shyang11 小时前
CCS20.2.0使用教程
c语言·git·单片机
lifewange20 小时前
常用的Git命令有哪些?
git
无限进步_21 小时前
【C++】电话号码的字母组合:从有限处理到通用解法
开发语言·c++·ide·windows·git·github·visual studio
C++ 老炮儿的技术栈21 小时前
GCC编译时无法向/tmp 目录写入临时汇编文件,因为设备空间不足,解决
linux·运维·开发语言·汇编·c++·git·qt
英俊潇洒美少年21 小时前
Git 常用命令速查表(前端开发专属版)
git