git pull说最新但git push拒绝非快进

时间:2010-11-30 09:10:52

标签: git git-push git-pull

我刚刚拉了一个新分支,做了一些本地更改,承诺并尝试推送。我收到了这个错误:! [rejected] groups -> groups (non-fast forward) 所以我尝试了拉,但被告知Already up-to-date.

这是我拉动然后推动的东西。

~/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'

任何人都可以解释这是如何发生的以及我如何解决它?

3 个答案:

答案 0 :(得分:22)

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

您可以手动进行合并:

git fetch
git merge origin/groups

为了比较本地和远程repos,我建议你使用这个命令(在别名中添加它,它很有用):

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

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

注意:如果您想保留线性历史记录而不是“合并”,则可以在推送之前对遥控器上的本地分支进行“重新设定”:

git rebase origin/groups
git push origin groups

答案 1 :(得分:5)

我带着不同的问题来到这里。

我的git被设置为推动所有分支。我在FOO的一个分支上,但它也试图推动主人,这是不是最新的。诀窍是注意到它试图推动大师:

To git@git.machine:repo
 ! [rejected]        master -> master (non-fast-forward)

我将以下内容添加到我的.gitconfig中,默认情况下只推送当前分支:

[push]
    default = current

答案 2 :(得分:2)

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

我的本​​地分支没有远程分支来正确配置[git pull]。从git remote show origin的o / p可以看出这一点。因此,我必须使用git pull origin <branch_name>代替git pull来提取更改。