之前在一个文件夹下开始了一个项目,传到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也许就不会有下面这么多糟心事。