我刚刚拉了一个新分支,做了一些本地更改,承诺并尝试推送。我收到了这个错误:! [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'
任何人都可以解释这是如何发生的以及我如何解决它?
答案 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
来提取更改。