如何解决Git reset --hard后推送远程失败

1,332 阅读1分钟

背景

分支回滚,执行完git reset后,推送到远程分支即使添加了--force,仍旧无法推送。

git push --force origin ${branch_name}

报错

! [remote rejected]   HEAD -> refs/for/${branch_name} (no new changes)
error: 推送一些引用到 `${repo_name}` 失败

说明远程服务器拒绝非新内容的push,可以通过修改git配置receive.denyNonFastForwardsfalse允许非新内容push。 但通常对于共享仓库而言,允许回滚代码直接推送风险较高,所以通常开启该配置,可以从其他方案入手

解决方案

  1. 删掉旧的远程分支,重新推送
// 删除旧远程分支
git push origin :${branch_name}
// 重新创建新分支
git push origin ${branch_name}
  1. 若方案一仍旧无法解决,可以考虑使用git revert重新创建一个新commit
// N表示需要回滚的提交的数量
git revert HEAD~N

git push origin ${branch_name}

参考

stackoverflow.com/questions/1…