Git 分支提示位于其远程对应项的后面,并且正在防止“推送”

Posted

技术标签:

【中文标题】Git 分支提示位于其远程对应项的后面,并且正在防止“推送”【英文标题】:Git branch tip is behind it's remote counterpart and is preventing a 'push' 【发布时间】:2014-02-12 18:20:30 【问题描述】:

我使用 Git 进行源代码控制。我没有完全理解发生了什么,以为我运行得很好。然后我去提交最新的分支,这显然是有效的,但是当我尝试推送时,我得到了这个:

我担心如果我通过 git pull 来合并更改,我真的会破坏好分支。 当我查看 SourceTree 上的文件状态时,我有这个:

如何解决这个问题,以便我可以继续在新分支上工作?我不敢尝试类似的东西

git pull --rebase origin master

没有比我了解更多的人告诉我没关系,并且会解决我的问题...

更新: 是否使用正确的分支再次推送,这就是我得到的:

git -c diff.mnemonicprefix=false -c core.quotepath=false push -v SalonBook 1.9.3:1.9.3 
Pushing to https://SpokaneDude@bitbucket.org/SpokaneDude/salonbook-git.git
git: 'credential-osxkeychain' is not a git command. See 'git --help'.
git: 'credential-osxkeychain' is not a git command. See 'git --help'.
To https://SpokaneDude@bitbucket.org/SpokaneDude/salonbook-git.git
 ! [rejected]        1.9.3 -> 1.9.3 (non-fast-forward)
error: failed to push some refs to 'https://SpokaneDude@bitbucket.org/SpokaneDude   /salonbook-git.git'
hint: Updates were rejected because a pushed branch tip is behind its remote
hint: counterpart. Check out this branch and merge the remote changes
hint: (e.g. 'git pull') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
Completed with errors, see above

【问题讨论】:

您可以从 master 创建一个新分支并尝试在该分支中合并。如果成功,你也可以合并master 这不只是一种“创可贴”的方法吗?没有更好的方法来解决这个问题吗? git pull -rebase origin master 命令呢?我真的很想摆脱前面4,后面1的混乱...... 为什么要尝试将本地 1.9.4 推送到远程 1.9.3?它不应该将本地 1.9.4 推送到远程 1.9.4 吗? 糟糕...你是对的!所以我尝试了更正的推送,并将结果发布在上面的问题更新中...... 【参考方案1】:

你应该在推送之前做一个git pull

这将从远程分支获取任何更改并在本地合并它们。

然后你就可以推送了。

【讨论】:

感谢大家提出如何修复它的建议...我尝试了所有建议,最终删除了所有内容(本地和远程)并从头开始...现在很干净并且可以正常工作它应该的方式。 谢谢,我不知道 git pull 在本地合并,我以为它只是直接替换。【参考方案2】:

git pull --rebase 将解决您的问题。落后于 X 提交并不是什么大问题,只是意味着其他人在你之前将提交推送到了远程。

当多个人在同一个远程仓库上工作时,这种情况很常见。

【讨论】:

以上是关于Git 分支提示位于其远程对应项的后面,并且正在防止“推送”的主要内容,如果未能解决你的问题,请参考以下文章

更新被拒绝,因为您当前分支的尖端在提示后面:它的远程对应部分。集成远程更改(例如 [重复]

推送到远程失败,因为“当前分支的尖端位于其远程对应部分之后”

git基于远程分支创建本地分支

git遇到的问题

git 多人协作

关于在天机项目中遇到的常用git 命令