为什么“git push”被拒绝了? (“git pull”没有帮助)

时间:2012-01-17 21:28:43

标签: git git-push

我当前的分支是my_branch。我试图将更改推送到远程仓库:

$ git push
Counting objects: 544, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (465/465), done.
Writing objects: 100% (533/533), 2.04 MiB | 1.16 MiB/s, done.
Total 533 (delta 407), reused 0 (delta 0)
To git@......git
   4ed90a6..52673f3  my_branch -> my_branch
 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to 'git@......git'
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.

尝试git pull会导致:

$ git pull
Already up-to-date.

为什么我收到此错误? 如何解决此问题并成功执行git push

5 个答案:

答案 0 :(得分:25)

  

我目前的分支是my_branch。

这是你的问题。当您拉动时,Git会告诉您,您的分支my_branch是最新的,不是 master,它位于origin/master之后,无法快速合并。

为了推送主人,你需要检查master并拉。这将合并到等待origin/master的更改中,并允许您推送自己的更改。

git checkout master
git pull
# resolve conflicts, if any
git push

答案 1 :(得分:5)

[如果您的主分支已经配置为在pull上进行rebase,那么您只需要对其他answerd中描述的master分支进行拉取,否则:]

如果您收到非快进消息,这意味着您只能在现有提交之上推送提交,但您尝试不这样做。在推送之前对master进行rebase(假设遥控器被称为origin):

git checkout master
git pull --rebase origin master
git push

另请参阅此问题:git rebase and git push: non-fast forward, why use?

答案 2 :(得分:4)

将开发者权限更改为“维护者”

答案 3 :(得分:3)

它也可能是Git Hook! 那会给出同样的错误。

Git Hooks在本地运行,因此它们可以在推送之前拦截并“预处理”提交。

更多有关Git Hooks的信息:https://githooks.com/ 您应该能够在您的仓库的根目录中找到钩子:.git/hooks。 读取钩子文件可能有帮助,也可能没有帮助;它们充满了高级git命令和regexp。 使用文件浏览器/查找器进行查找,因为带有句点(.git,.gitignore)前缀的文件通常隐藏在IDE的文件中。

当尝试推入名为feature/JIRA-123_description-text的分支时,我也遇到了同样的错误,经过一番环顾后,我发现所有其他项目分支都被命名为features/...,所以我只是缺少了 s 。重命名分支即可解决问题。

因此,如果拉主服务器等无法解决问题,请尝试查看其他一些分支名称并匹配格式。或检查文档以查看是否有特殊的分支命名策略,或者您是否尝试过以错误的文件格式推送内容等。

答案 4 :(得分:1)

为我解决了什么

转到https://github.com/confluentinc/ksql/issues/4051

取消锁定:“阻止命令行公开我的电子邮件”

对我来说,问题是:许可证中有我的电子邮件