Github - Git推送错误

问题描述:

所以我在一个叫'test_branch'的分支上。Github - Git推送错误

我做git add .git commit和一切工作正常。

但是当我做git push,它给我的错误:

! [rejected]  acceptance -> acceptance (non-fast-forward) 
error: failed to push some refs to '[email protected]:company/sample.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让我发现,一切都是跟上时代的,做后一推,给了我同样的错误如上。

有人可以帮我这个吗?

谢谢。

+0

你想推送给主人还是推送到远程分支? –

+0

我试图推送到远程分支... origin/test_branch – Myxtic

当你不带任何参数键入git push,其行为取决于push.default设置的值。的push.default默认值是matching,其中,根据git help config,执行以下操作:

matching - 推具有在两端具有相同的名称的所有分支。这是为那些准备所有分支成可发布形状,然后用一个命令推出它们的人。推入多个用户共享的存储库是不合适的,因为如果其他用户更新了分支,本地停止的分支将尝试非快速向前推送。

换句话说,如果你的本地仓库中有一个名为acceptance分支机构和远程仓库有一个名为acceptance分支,然后git push将努力使远程acceptance分支符合您acceptance分支,即使你没有acceptance签出。

所以,我的猜测是,你在过去的某个时间检查了acceptance,但有人在其他项目(或者你从不同的克隆库的)推新提交到acceptance。这导致您的本地acceptance分支位于远程acceptance分支后面。现在,无论何时输入git push,Git都会尝试将远程acceptance分支备份到本地存储库中的版本。

要解决,我建议设置push.defaultsimple(或upstream如果simple是不是在你的Git版本 - 它只是在1.7.11添加)。

+0

'git config push.default upstream'像一个魅力一样工作。非常感谢 !! – Myxtic

可能有一个分支需要合并才能推送一个快速转发的提交。为了找到答案,首先做

$ git fetch 

然后做

$ git log --graph --decorate --oneline --all 

你应该看到你努力推动分支不在同一直线上,领先的远程分支您要合并的用。

顺便说一下,git push本身总是将所有跟踪的分支推送到它们的原点/对应点,并且您可能有与其原点对应的分支不及时。在这种情况下,请忽略警告。你可以让这个警告少罗嗦由:

$ git config advice.pushNonFastForward false 

但我现在看到你真正的问题是可能是test_branch不会与git push推。为了解决这个问题,请键入:

$ git branch --set-upstream test_branch origin/test_branch 
+0

+1非常感谢您的信息。 – Myxtic