完全陷入git - “git push”不起作用,“git pull”没有“修复”

时间:2011-10-10 19:59:27

标签: git github

我决定今天尝试使用Git,并尝试了解其分支系统的工作原理。馊主意。我以某种方式让自己处于一个我在一个分支上做出改变的状态,当我做“git push”时,我得到了:

To git@github.com:LAW/Repo.git
! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to 'git@github.com:LAW/Repo.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 pull”更好的建议来解决这个问题。不用说这非常令人沮丧!

编辑评论者要求输出“git branch -a”。有问题的分支是“PersonalSite”

* PersonalSite
master
remotes/origin/HEAD -> origin/master
remotes/origin/PersonalSite
remotes/origin/master

3 个答案:

答案 0 :(得分:5)

您被拒绝的推送是主 - >主。但你所在的分支机构是PersonalSite。听起来你的主分支有一个远程没有的本地提交,但缺少来自远程的提交。但是,您正试图在PersonalSite上git pull。我不确定它试图从哪个分支开始,可能是origin/master(这取决于您在创建分支时可能设置的上游信息)。 git push并没有试图推送PersonalSite,因为默认情况下,它只会推送“匹配”分支(例如,双方已存在的分支),而且PersonalSite仅存在于本地。

你想在这里实现什么?如果要将PersonalSite推送到远程,请使用git push origin PersonalSite。如果你想修复你的主分支,请检查它,然后运行你的git pull(或任何你想做的其他事情来修复它)。

答案 1 :(得分:4)

您应该只需更新主分支:

git checkout master
git pull

验证:

git checkout PersonalSite
git push # Should say "Everything up-to-date"

答案 2 :(得分:0)

被拒绝的分支是master分支。您不在master分支上,而是在PersonalSite分支上,(git pull建议的输出)已经是最新的。

没有额外参数的

git push可以通过不同方式配置(请参阅push.default的{​​{1}}部分)。默认情况下,它会推送所有匹配的分支。在这种情况下,它正在尝试推送git help config,但master分支是最新的,因此推送失败。错误消息有点误导。