2012-01-16 123 views
1
$ git branch 
    master 
* portal 
$ git fetch 
$ git merge origin/portal 
Already up-to-date. 
$ git pull 
Already up-to-date. 
$ git push 
To [email protected]:ripper234/Commerce-Sciences.git 
! [rejected]  master -> master (non-fast-forward) 
error: failed to push some refs to '[email protected]:ripper234/Commerce-Sciences.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. 

通常我会做一个gitk -all来试试看看到底发生了什么,但是这是在没有图形化外壳的Linux机器上。为什么我的推送被我拒绝后拒绝?

+0

[推送操作抱怨非快进,即使远程一直拖着]的可能重复(http://stackoverflow.com/questions/5723714/git-push-complaining-about - 非快进 - 即使 - 尽管远程 - 已被拉) – ripper234 2012-01-16 09:55:22

+1

一个方便的终端,唯一替代'gitk --all'是'git log --oneline --graph --decorate --all' – 2012-01-16 10:06:00

回答

5

注意这条线从错误信息:

! [rejected]  master -> master (non-fast-forward) 

您合并了portal分支机构,但你还试图推动master,因为git push默认会努力推动这也存在于origin所有分支。试试这个:

$ git push origin portal 
+0

但是我已经在'portal'分支上......不是'git push'推送当前分支? – ripper234 2012-01-16 10:00:41

+0

事实证明'portal'分支没有任何未被推送的提交。我仍然困惑。 – ripper234 2012-01-16 10:02:06

+3

@ ripper234:只要具有该名称的分支已存在于远程端*,'git push'就会将每个分支推送到远程*中具有匹配名称的分支。如果您想要将该行为更改为不太令人吃惊的行为,请查看“push.default”配置选项的文档。 – 2012-01-16 10:04:48