git如何强行push本地旧版本的代码到远程并覆盖远程新版本的代码

比如有这样一种场景,我从git上clone了一份代码,然后本地不小心给全删了,然后add 、 commit 、 并且已经push到远程库了,现在远程库也因为我的失误而清空了。
那么现在问题来了,比如现在的版本号是aaaaa,之前正确的代码的版本号是bbbbb。 我现在就算在本地可以用git reset --hard bbbbb回到之前正确的版本, 但是也无法push到远程了,会弹出本地的版本低于远程版本的错误。这样一来我必须先要pull,但是一pull本地的代码就又空了。。。。
有什么办法可以强行将旧版本的代码push到远程并覆盖远程新版本的代码吗?

然后如果我成功恢复了远程的代码,有没有可能对队友造成什么影响。。。

阅读 33.2k
3 个回答

git push -f 强制提交

git push -f 可以强制提交,但log记录只有你本地的,其它人提交的就不见了

追加:
方法一:
201717252139-t.png

方法二:

Master is protected by default, I believe, and project users that don't have the master or owner roles cannot push to it or any other protected branch.

是说gitlab默认master分支是受保护的,没有权限的人不能push

git由于不经常提交代码所以会出现版本更新的问题
git pull(已经绑定默认远程仓库的情况)
或者:
git pull origin master
这个时候git命令行中分枝状态变成了 master | MERGING,现在:
git add .
git commint -m "merge with remote"
最后git push origin master

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏