Git Pull表示最新,但Git推动拒绝向前
题
我刚刚拉了一个新的分支,进行了一些本地更改,承诺并试图推动。我得到了这个错误: ! [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'
谁能解释如何发生这种情况以及如何解决?
解决方案
当您拉动分支时,您是否使用“ - 轨道”选项(为了保持本地分支跟踪远程分支)。如果您没有,它可以解释不起作用的“合并”命令。
您可以手动合并:
git fetch
git merge origin/groups
要比较本地和远程存储库,我建议您使用此命令(添加为别名,它很有用):
git log --graph --oneline --all --decorate
它将打印项目历史树,显示分支标签。因此,您将看到您的分支和原始分支在哪里分歧。
注意:如果您想保留线性历史记录,而不是“合并”,则可以在推动之前对遥控器上本地分支进行“重新构想”:
git rebase origin/groups
git push origin groups
其他提示
我有一个不同的问题来到这里。
我的git设置为推动所有分支。我当时在分支机构上,但它也试图推动主人,这不是最新的。诀窍是注意到它试图推动大师:
To git@git.machine:repo
! [rejected] master -> master (non-fast-forward)
我将以下内容添加到我的.gitConfig中,默认情况下仅推动当前分支:
[push]
default = current
这不是问问问题的答案。我的错误消息有不同的问题。
我的本地分支没有远程分支可以正确地从配置中提取更改[git Pull]。从O/P的O/P可以明显看出 git remote show origin
. 。所以,我不得不使用 git pull origin <branch_name>
代替 git pull
拉更改。
不隶属于 StackOverflow