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
让我发现,一切都是跟上时代的,做后一推,给了我同样的错误如上。
有人可以帮我这个吗?
谢谢。
当你不带任何参数键入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.default
到simple
(或upstream
如果simple
是不是在你的Git版本 - 它只是在1.7.11添加)。
'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
+1非常感谢您的信息。 – Myxtic
你想推送给主人还是推送到远程分支? –
我试图推送到远程分支... origin/test_branch – Myxtic