! [remote rejected] development -> development (failure) error: failed to push some refs to XXX

本文记录了一次解决Git推送错误的经历,包括使用IDEA自动合并失败、尝试多种命令无效后的最终解决办法。

今天提交代码的时候git报错了,由于昨天本地有代码没提交,在别的地方提交了代码,导致这次的git冲突,使用idea 的自动merge 失败了。如图:

idea 的 git 功能明显不够用啊,使用客户端吧,使用 git push 还是不管用

使用 网上推荐的方案 git commit --amend 仍然不管用

使用网上推荐的另一个方案 git merge --no-off 又失败了

取巧的办法都试过了 都是不行 只能硬刚了。 以下是我的硬刚的方案

使用master分支测试能否提交

结果如下

看看 master 都提交不了了。

新建分支试试,本地新建成功了 推送到远程失败

我新建了一个文件夹 重新 下载 项目 ok 成功了

然后 idea 先关闭 重新打开原来的项目 重新提交 居然成功了

真是一次奇葩的经验。

几天后补充:又是一次git push报错:

22:25	Push failed
		Kex_exchange_identification: read: Connection reset by peer
		Could not read from remote repository.
		Please make sure you have the correct access rights
		and the repository exists.

补充:

重新另起一个文件夹,将原来的项目重新down 一份到本地,原来的文件夹里的项目就能 push 成功,多次验证这种方法就是可行的。

<think>我们被要求解决Git推送时出现的" [remote rejected] master -> master (pre-receive hook declined)"错误。 根据引用[2]和引用[3],该错误通常是由于远程仓库的pre-receive hook拒绝了推送,常见原因是分支保护(protected branch)导致没有权限推送。 引用[3]提供了三种解决方法: 1. 关闭master分支的protected权限(需要管理员权限) 2. 新建其他分支,推送到新分支,然后合并(但developer可能无法创建分支) 3. 让管理员提升账号权限(如Owner或Maintainer) 因此,我们可以总结以下步骤: 步骤1:确认错误原因 - 错误信息明确指出了pre-receive hook拒绝,通常是因为目标分支(这里是master)受保护,而当前用户权限不足。 步骤2:检查权限 - 确认你是项目的管理员或拥有对master分支的写权限。如果不是,则需要联系项目管理员。 步骤3:解决方法 - 方法A:联系项目管理员,请求他们关闭master分支的保护(在项目的Settings -> Protected branches中取消master分支的保护)。但请注意,这可能会降低分支的安全性。 - 方法B:请求管理员提升你的权限(至少为Maintainer),这样你就可以直接推送到受保护分支。 - 方法C:如果你有创建分支的权限,可以创建一个新的非保护分支(例如dev),将代码推送到该分支,然后请求合并(Merge Request)到master分支。但注意引用[3]提到developer可能无法创建分支,所以需要确认权限。 另外,引用[1]和[2]也提到,pre-receive hook可能因为其他原因拒绝,比如提交的代码不符合某种规范(如提交信息规范、代码格式等),但引用[3]更强调权限问题。因此,如果权限调整后问题依旧,需要检查远程仓库的pre-receive hook具体规则。 但是,根据用户提供的信息,用户是developer权限,且项目是远程创建的空项目,所以最可能的原因就是master分支保护。 因此,我们推荐用户首先联系项目经理(管理员)来处理。 如果用户自己就是管理员,则可以按照以下步骤操作(以GitLab为例): 1. 登录GitLab,进入该项目。 2. 在左侧菜单选择“设置”(Settings)> “仓库”(Repository)。 3. 展开“保护的分支”(Protected branches)。 4. 在“保护的分支”列表中,找到master分支,点击右侧的“取消保护”(Unprotect)按钮。 然后再次尝试推送。 如果是GitHub,则进入仓库的“Settings” -> “Branches” -> “Branch protection rules”,然后修改或删除master分支的保护规则。 注意:取消分支保护可能会带来风险,例如允许任何人推送,因此生产环境中应谨慎操作。 综上所述,具体步骤依赖于用户的权限和仓库平台(GitLab、GitHub等),但核心是解决权限问题。 相关问题: 1. 如何配置Git仓库的分支保护规则? 2. 除了分支保护,还有哪些原因会导致pre-receive hook拒绝? 3. 如何编写自定义的pre-receive hook脚本来检查代码规范? </think>### 解决 Git 推送出现 `[remote rejected] master -> master (pre-receive hook declined)` 错误的方法 该错误通常由**分支保护规则**或**权限不足**导致,以下是具体解决步骤: #### 🔑 方法一:解除分支保护(需管理员权限) 1. **进入仓库设置** 打开远程仓库(如 GitLab/GitHub)→ 进入 `Settings` → 找到 `Protected Branches` 2. **解除 master 分支保护** 在保护分支列表中取消 `master` 分支的保护状态(点击 `Unprotect`) 3. **重新推送代码** ```bash git push origin master ``` #### 👥 方法二:提升账号权限(需管理员操作) 1. **联系项目管理员** 请求将你的账号权限从 `Developer` 提升至 `Maintainer` 或 `Owner` 2. **验证权限** 在仓库的 `Members` 设置中确认权限已更新 3. **重新推送** ```bash git push origin master ``` #### 🌿 方法三:推送到新分支再合并(无需解除保护) 1. **创建新分支** ```bash git checkout -b feature/new-branch ``` 2. **推送到新分支** ```bash git push origin feature/new-branch ``` 3. **创建合并请求(MR/PR)** 在仓库页面手动创建 `Merge Request` 将新分支合并到 `master` > ⚠️ **注意**: > - 若 `pre-receive hook` 是自定义脚本(如代码规范检查),需检查推送内容是否符合规则 > - Developer 权限通常无法创建分支或修改保护规则,优先尝试方法三 --- ### 📚 相关问题 1. 如何配置 GitLab 的分支保护规则(Protected Branches)? 2. 不同 Git 权限级别(Guest/Developer/Maintainer/Owner)有哪些操作差异? 3. 如何编写自定义 pre-receive hook 脚本实现代码提交校验? [^1]: git向已有远程仓库推送代码报错 [^2]: 【Git】[remote rejected] master -> master (pre-receive hook declined) [^3]: git push解决办法: ! [remote rejected] master -> master (pre-receive hook declined)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值