如何强制推送重置到远程存储库?
我们的远程主分支莫名其妙地搞砸了。 当前的开发代码与最新的提交一起在主分支上。 很明显,开发代码没有准备好主分支。
所以在我的本地存储库,我做了一个重置到最新的标签, git reset --hard (Tag)
。 主分支现在在我的本地存储库上是正确的。 现在,当我尝试将更改推送到远程存储库时, git push origin master
,我得到一个错误:
To (REMOTE GIT REPOSITORY LOCATION) ! [rejected] master -> master (non-fast-forward) error: failed to push some refs to '(REMOTE GIT REPOSITORY LOCATION)' To prevent you from losing history, non-fast-forward updates were rejected Merge the remote changes (eg 'git pull') before pushing again. See the 'Note about fast-forwards' section of 'git push --help' for details.
所以看了看后我发现了--force
选项。 所以我做了一个强制推送到远程仓库, git push --force origin master
,我仍然有一个错误:
Total 0 (delta 0), reused 0 (delta 0) remote: error: denying non-fast-forward refs/heads/master (you should pull first) To (REMOTE GIT REPOSITORY LOCATION) ! [remote rejected] master -> master (non-fast-forward) error: failed to push some refs to '(REMOTE GIT REPOSITORY LOCATION)'
我不能拉大师,因为它包含不能在主人的发展代码。
这个信息意味着你不允许做非快进的推送。
你的远程仓库在其configuration中最有可能是denyNonFastforwards = true
。 如果你改变了, git push --force
应该可以工作。
要更改设置,请执行git config receive.denynonfastforwards false
。
遥控器不允许非快进。
你最好的select是git revert
所有不应该在那里的提交,并在将来更加小心。
git revert [commit]
将创build一个新的提交,撤销任何[commit]
做的事情。
尝试使用-f
标志并将其放在远程分支名称后面。
git push origin master -f
以下列样式永久启用强制推送的步骤
git push -f myrepo my-branch
编辑远程存储库中以“.git”结尾的文件夹中名为“config”的文件
在git的失败推送的命令行输出中,查找如下所示的行:
error: failed to push some refs to 'ssh://user@some-remote-server.mycompany.com/srv/git/myrepo.git
然后
ssh user@some-remote-server.mycompany.com cd /srv/git/myrepo.git vi config
将“denyNonFastforwards”设置为false
在“configuration”中设置
[receive] denyNonFastforwards = false
现在,您可以使用-f从本地计算机推送
git push -f myrepo my-branch
你不能做git push,这不是快进的。
-
如果远程是GitHub,请转到
https://github.com/$USER/$REPO/settings/branches
并取消对有问题的分支的保护。你必须是回购的pipe理员来做到这一点。
-
如果远程是你自己的git服务器,在那里运行
git config receive.denynonfastforwards false
。
问题发生当前分支没有正确configuration为拉 。 首先检查使用git remote show origin
是否正确configuration了上游分支。 您可以在“ 为git pull”configuration的本地分支下find它: 如果没有,请使用
git config branch.MYBRANCH.merge refs/heads/MYBRANCH
为占位符 – MYBRANCH提供适当的分支名称