35

我刚刚拉了一个新分支,进行了一些本地更改,提交并尝试推送。我收到了这个错误:! [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'

谁能解释这是如何发生的以及我该如何解决?

4

3 回答 3

27

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

您可以手动进行合并:

git fetch
git merge origin/groups

要比较本地和远程存储库,我建议您使用此命令(将其添加到别名中,这很有用):

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

它将打印项目历史树,显示分支标签。所以你会看到你的分支和原始分支在哪里分歧。

注意:如果您想保留线性历史记录,而不是“合并”,您可以在推送之前对远程本地分支进行“rebase”:

git rebase origin/groups
git push origin groups
于 2010-11-30T09:35:10.190 回答
6

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

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

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

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

[push]
    default = current
于 2012-07-27T19:18:01.727 回答
2

这不是对所问问题的回答。对于相同的错误消息,我遇到了不同的问题。

我的本地分支没有远程分支来从正确配置的 [git pull] 中提取更改。这从git remote show origin. 所以,我不得不使用git pull origin <branch_name>而不是git pull拉动更改。

于 2016-05-02T06:24:12.317 回答