【发布时间】:2012-05-19 14:58:37
【问题描述】:
我们的远程主分支不知何故搞砸了。当前的开发代码与最新的提交一起在主分支上。显然,主分支的开发代码还没有准备好。
所以在我的本地存储库中,我重置了最新的标签git reset --hard (Tag)。 master 分支现在在我的本地存储库上是正确的。现在,当我尝试将更改推送到远程存储库 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 (e.g. '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)'
我不能在 master 上做 pull,因为它包含不能在 master 上的开发代码。
【问题讨论】:
-
我认为该消息意味着您无权进行非快进推送。
-
你是对的,谢谢。在远程存储库的配置文件中,
denyNonFastforwards = true。我将其更改为 false,推送我的更改,然后将其更改回 true。再次感谢大家的帮助。 -
@samwell 请将 svick 的回答标记为已接受
-
@samwell svick 的回答对你有用吗?
-
对于那些需要详细了解如何像 samwell 那样禁用denyNonFastForwards 的人,可以在此处找到更多说明:stackoverflow.com/a/43721579/2073804
标签: git