记一次--rebase导致的文件丢失git错误

2,592 阅读2分钟

之前在一个文件夹下开始了一个项目,传到git之后停滞了半个月,后来说要采取另一种框架,所以又新建了一个文件夹开始做。首先我把之前的项目文件进行删除,又重新在目前的文件夹下开始git init。一切都按照原计划进行:

git add .
git commit -m "更新"
git push origin master

结果报错,说我还未关联仓库,则输入:

git remote add origin 网址

关联好之后再进行一次push:

git push origin master

还是报错,给出提示说我可能需要先pull再push。我看网上很多案例都是说如果github上有readme文件,需要进行合并再使用,我想着之前这么使用也没出过错,就和之前一样输了这个命令:

git pull --rebase origin master

然后我一看文件夹,我之前的文件全没了。变成了最初什么也没有的版本,我到网上一顿猛搜,发现可以使用git log看之前提交的记录,我一条条翻过去发现根本没有我之前输的“更新”的那条commit记录。我仔细一看发现我现在在的支线是原来最初被删掉的线,而不是我今天提交的线。于是我往前翻我最初的master编号,使用

git checkout <commitID>

回到了之前的分支,这是再使用git log就能找到我这次的提交记录了,现在就只剩回滚到之前的状态,复制log中那次commit的编号,输入:

git reset --hard xxxxxxxxxxxxx

这时已经回到了当初的版本(我立马打包备份),但是输入push还是会报错,因为和之前的那条线存在冲突,解决冲突之后再次push即可。

由于我这次的代码是需要完全替代之前的代码的,所以我直接输入:

git push origin master -f

强制推送,则问题解决,上传成功。

我仔细想了想,如果我第一次push的时候,加上-f也许就不会有下面这么多糟心事。