git push到的时候遇到 ! [remote rejected] master -」 master (pre-receive hook declined)的问题

原因:远程仓库和本地同步的代码文件存在差异,由于个人在A先提交了一个大的文件到本地,然后又从B提交了代码到线上,导致线上代码与本地A机器代码不一致

remote: git rev-list --objects --all | grep 7c431234ab53abc7ef04b9aa97e66afe6519d85e
remote: Please remove the file from history and try again.
! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'github.com'

git-rev-list - 按反向时间顺序列出提交对象

# 查看文件大小
du -ah .git/objects
# 查看哪个文件占用的空间比较大
du -d 1 -h
#占用空间最多的五个文件
git rev-list --objects --all | grep "$(git verify-pack -v .git/objects/pack/*.idx | sort -k 3 -n | tail -5 | awk '{print$1}')"

鉴于个人查找解决的时候答案比较凌乱,在此汇总的解决办法,问题不一样,搞清楚命令含义再使用,已解决我个人遇见的问题,仅供参考。

解决一:强制提交
git push -f
解决二、消除差异重新提交
1、把远程仓库和本地同步,消除差异
	git pull origin master --allow-unrelated-histories 
2、push到远程仓库
    git push origin master
 或者重新初始化关联
1、初始化本地仓库
	git init 
2、重新关联本地和远程仓库
	git remote add origin git@github.com:******/manage.git
解决三:解决删除提交的大文件,冲突文件,删除git 历史中的纪录
1、按照git 错误提示执行该语句,找到文件所属路径
	git rev-list --objects --all | grep 7c431234ab53abc7ef04b9aa97e66afe6519d85e
2、删除文件
	rm -rf fileName
3、移除git 历史中的纪录
	git filter-branch --force --index-filter 'git rm -rf --cached --ignore-unmatch '大文件名' --prune-empty --tag-name-filter cat -- --all
4、强制覆盖的方式推送你的repo
	git push origin master --force
解决四:直接删除,清理和回收空间
rm -rf .git/refs/original/
git reflog expire --expire=now --all
git gc --prune=now
git gc --aggressive --prune=now
git push origin master --force
# 让远程仓库变小
git remote prune origin

参考原文链接:
记一次删除Git记录中的大文件的过程

彻底删除git中的大文件

腾讯云Git 开发者手册—Plumbing Commands

git push到GitHub的时候遇到! [rejected] master -> master (non-fast-forward)的问题

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当你在使用git push命令时,如果出现错误提示"! [remote rejected] master -> master (pre-receive hook declined)",这通常是由于远程仓库的钩子(pre-receive hook)拒绝了你的推送引起的。钩子是一些在特定事件发生时自动执行的脚本,它们可以用来验证和控制提交到远程仓库的内容。 要解决这个问题,你可以尝试以下几种方法: 1. 检查你的代码:首先,你应该检查你的本地代码是否有错误或不规范的内容。确保你的代码符合项目的规范,并且没有任何语法错误或其他问题。 2. 检查远程仓库的钩子:联系项目经理或仓库管理员,确认远程仓库是否有设置钩子来验证提交。如果有,你可以询问他们有关钩子的具体规则和要求。 3. 检查分支权限:确保你具有向远程仓库的master分支推送代码的权限。有时,项目经理或仓库管理员可能会限制对某些分支的推送权限。如果你没有相应的权限,你需要与他们沟通并请求相应的权限。 4. 提交到新分支:如果你无法向master分支推送代码,你可以尝试创建一个新的分支并将代码提交到该分支。这样,你就可以在没有权限问题的情况下将代码推送到远程仓库。 总结起来,当你在使用git push命令时遇到"! [remote rejected] master -> master (pre-receive hook declined)"错误时,你可以检查代码、钩子、分支权限以及尝试将代码提交到新分支来解决问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Git发现git push origin master 报错的解决方法](https://download.csdn.net/download/weixin_38743602/14092211)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [git-push-each:git push-reach -- 将每个提交推送到自己的分支](https://download.csdn.net/download/weixin_42116847/19396390)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [git push解决办法: ! [remote rejected] master -> master (pre-receive hook declined)](https://blog.csdn.net/weixin_39818813/article/details/129591891)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值