2010-11-30 51 views
28

我刚刚拉了一个新的分支,做了一些本地更改,承诺并试图推动。我被给出了这个错误:! [rejected] groups -> groups (non-fast forward) 所以我试图拉,但被告知Already up-to-date.git pull说最新的但git推拒绝非快速转发

这是我拉,然后推。

~/dev$ git pull origin groups 
Already up-to-date. 
~/dev$ git push origin groups 
To /mnt/ebs/git/repo.git 
! [rejected]  groups -> groups (non-fast forward) 
error: failed to push some refs to '/mnt/ebs/git/repo.git' 

任何人都可以解释如何发生这种情况,我可以如何解决它?

+0

尝试使用-v运行git push -d – 2010-11-30 09:17:18

+0

@dan:-v除了再次访问repo的路径之外不会再提供任何其他输出。 `推到/ mnt/ebs/git/repo.git` – Jake 2010-11-30 09:21:40

+0

我想看看他们应该匹配的两个仓库中的团队负责人的哈希值,但如果他们不这样做会是正确的错误,如果他们不并且远程并不是本地的前缀 – 2010-11-30 09:26:06

回答

18

当您拉动分支时,您是否使用了“--track”选项(为了让您本地分支跟踪远程分支)。如果你没有,它可以解释,“合并”命令不起作用。

您可以手动完成合并:

git fetch 
git merge origin/groups 

比较本地和远程的回购协议,我建议你这个命令(别名添加它,它是有用的):

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

它将打印项目历史树,显示分支标签。所以你会看到你的分支和起源分支的分歧。

注意:如果你想保持一个线性的历史,而不是“合并”,你可以做前推遥控器上的本地分支的“变基”:

git rebase origin/groups 
git push origin groups 
5

我来这里一个不同的问题。

我的git被设置为推送所有分支。我在一家分公司的FOO,但它也试图推动主人,这是不是最新的。诀窍是注意到它努力推动主:

To [email protected]:repo 
! [rejected]  master -> master (non-fast-forward) 

添加以下到我的.gitconfig只默认推进当前分支:

[push] 
    default = current 
2

这不是一个问题的答案问。我对同样的错误信息有不同的问题。

我的本地分支没有远程分支来从正确配置中拉出更改[git pull]。这从git remote show origin的o/p明显可见。所以,我必须使用git pull origin <branch_name>而不是git pull来进行更改。