git push报错'remote: fatal: did not receive expected object'的解决方案

2023-09-16 #git, #github 797 words 2 min read

故事背景

来到广西民大,当我用keep室外跑功能记录自己每天晨跑,满怀期待地打开自己搭建的running page网站时,发现新的跑步记录并没有向往常一样呈现出来,网站最后更新的截止日期是9月9号,那天早上在酒店锻炼使用的是keep的室内跑功能。

keep室外跑数据无法同步

keep软件的改版应该是在今年暑假,2023年7月份那会。当时在家中,我每天使用的是室内跑功能,虽然地图数据无法获取,但是跑步记录还能持续获取,并在网站上更新。

原项目的讨论区也有网友出现了keep无法同步数据的错误。见获取keep数据错误 #484

网友回复

这是国产软件的通病,喜欢绑架用户数据。我承认keep软件的用户体验比目前使用的国外strava软件更加人性化,但捆绑用户数据的行为直接会将它的优势一举抹除。

于是我准备重新新建一个仓库并部署,原本的网站保留,原本的仓库归档。

当我配置完配置项,准备将内容推送到github新仓库时,出现了一个报错’remote: fatal: did not receive expected object’。

操作复现

# 克隆远程仓库到本地,只获取最新的一次提交(浅克隆)
git clone https://github.com/yihong0618/running_page.git --depth=1

修改配置项

# 将所有修改添加到Git暂存区
git add .
# 提交暂存区的修改,并附加消息"xxx"
git commit -m "xxx"
# 将本地的master分支推送到远程仓库,并设置远程仓库为默认上游
git push -u origin master

经上述操作,得到如下报错:

git push报错

解决方案

在stack overflow上有这样一个回复。

stack overflow网友回复

对应到我的场景,我会选择Jon Mair网友的方案,直接将.git文件夹删除,接着进行如下操作。最终成功将仓库推送到GitHub上了。

# 初始化一个新的Git仓库,创建一个新的.git目录来存储仓库信息
git init
# 将所有修改添加到Git暂存区
git add .
# 提交暂存区的修改,并附加消息"xxx"
git commit -m "initial commit"
# 将本地的master分支推送到远程仓库,并设置远程仓库为默认上游
git push -u origin master

GPT4分析:

GPT4分析


Emoji Reaction


© 2022-2024 Made with ❤️ By Jiakai