当前位置:   article > 正文

代码回滚(git reset)后push失败的解决方法_git回退之后push失败

git回退之后push失败

问题描述

代码本地回滚之后(即 git reset 到之前的某个历史节点),push上去失败,并报出以下错误信息

  1. ! [rejected]
  2. master -> master (non-fast-forward) error: failed to push some refs to 'git@github.com:PisecesPeng/usegit.git'
  3. hint: Updates were rejected because the tip of your current branch is behind
  4. hint: its remote counterpart. Integrate the remote changes (e.g. hint: 'git pull ...') before pushing again.
  5. hint: See the 'Note about fast-forwards' in 'git push --help' for details.

大致意思是说,你当前的本地分支节点 比 远端的节点 还旧,默认不允许你push。

其实主要是怕你误操作,因为reset到某个旧节点之后 再push上去,会导致远端的新节点 也同步丢失,如下图所示:

而我们回滚代码 又恰恰是为了丢掉新节点,所以这个时候可以 强制push

解决方案

此处用 TurtoiseGit 工具演示(你也可以用命令行,道理都一样)。

第1步,在Push界面,找到Force选项。

第2步, 勾选“known changes”或“unknown changes”,点击下方的“OK”,即可强制提交

known changes:相当于 --force-with-lease 命令,大致意思是 push 时会先帮你检查,只有当你要回滚的 本地commit节点 与 远端的commit节点完全一致,才能 push 上去。

unknown changes:相当于 --force 命令,更加简单粗暴,不作任何安全检查,直接 push 上去,并覆盖远端的 commit节点。

第3步,登录远端的 git仓库,查看提交结果,如下图所示

 可以看到,已经成功回滚到“feat:新增....菜单”的commit节点,而之前“feat:添加打印”这个commit节点已经丢失。

注意:强制提交 这种操作是不可逆的,例如上述的“feat:添加打印”这个commit节点 将永久性丢失,所以要谨慎使用。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/504734
推荐阅读
相关标签
  

闽ICP备14008679号