背景
分支回滚,执行完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.denyNonFastForwards为false允许非新内容push。
但通常对于共享仓库而言,允许回滚代码直接推送风险较高,所以通常开启该配置,可以从其他方案入手
解决方案
- 删掉旧的远程分支,重新推送
// 删除旧远程分支
git push origin :${branch_name}
// 重新创建新分支
git push origin ${branch_name}
- 若方案一仍旧无法解决,可以考虑使用
git revert重新创建一个新commit
// N表示需要回滚的提交的数量
git revert HEAD~N
git push origin ${branch_name}