关于对分支的非快进更改的Git错误
现在我有一个叫做游乐场的回购协议关于对分支的非快进更改的Git错误,git,github,git-branch,git-push,Git,Github,Git Branch,Git Push,现在我有一个叫做游乐场的回购协议 它记录了3次提交 我的游乐场本地副本已提交1次 我还有一个名为SecondB的分支机构,它是从我当地的游乐场副本复制而来的。然后在SecondB上我做了两个更改,这样SecondB总共有4次提交 git远程显示源: HEAD branch: master Remote branches: SecondB tracked master tracked Local branches configured for 'git pull':
它记录了3次提交
我的游乐场本地副本已提交1次
我还有一个名为SecondB的分支机构,它是从我当地的游乐场副本复制而来的。然后在SecondB上我做了两个更改,这样SecondB总共有4次提交 git远程显示源:
HEAD branch: master
Remote branches:
SecondB tracked
master tracked
Local branches configured for 'git pull':
SecondB merges with remote SecondB
master merges with remote master
Local refs configured for 'git push':
SecondB pushes to SecondB (up to date)
master pushes to master (local out of date)
我的问题是,当我在SecondB分支上并尝试推送它时,会出现以下错误:
! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to 'url for repo'
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在SecondB上时推送origin SecondB
为什么当我在SecondB上并让它推送到SecondB的远程副本时,我不能简单地执行git push
好的,新信息:
进一步检查错误后,似乎每次我尝试git push时,它都会尝试推送到远程分支和远程主机。为什么会发生这种行为?我该如何解决这个问题呢?这是因为您还没有将要推送的本地分支与要推送的远程分支的当前内容合并。在这种情况下,git试图让您在推之前合并它。通常,您将获取/合并(或拉取),然后您将能够毫无问题地推送。如果您想忘记您没有的修订版,并使远程服务器拥有本地的分支,您可以使用
git push-f
当您在没有其他参数的情况下运行git push
时,它会尝试推送跟踪远程分支的所有本地分支。在您的示例中,它是master
和SecondB
。但是您的本地主机
位于远程主机
后面,因此无法推送。这就是命令失败的原因
如果所有跟踪分支都在前面或与远程分支同步,则只能使用git push进行推送。使用配置设置更改推送的默认行为。在推送之前,远程分支中可能存在提交,您需要获取/合并或拉送。你能检查一下git fetch的内容吗,然后再检查一下git status的内容吗?git fetch什么都不做git status只是说:#在branch Second上B nothing to commit(工作目录清理)编辑:点击回车太快是正确的选择,但是推送的准确选项取决于你的git版本。您使用的是什么版本的Git?但是我对远程分支没有任何更改,而该分支的本地副本上还没有更改,如果您说:
Git获取远程;git branch--包含远程/远程分支名称
,您是否在git branch调用报告中获得本地分支?