git 推送被拒绝,可能是因为 rebase

git push rejected, maybe because of rebase

我有一个自动化的 Jenkins 作业,它只执行以下操作:

remoteA 是开发人员实际推送代码的远程。

remoteB 从未被手动触及,它仅通过自动化作业接收更新。

有一段时间效果很好,但现在我在尝试推入 remoteB

时得到 Updates were rejected because the tip of your current branch is behind its remote counterpart.

据我所知,这种情况发生在

如果你做了 rebase 修改了历史记录,所以你不能推送到远程,除非你想 overwritechange 存储库的内容。

如果您仍想推送内容,则必须使用 -f

# FORCE overwrite of old content with the new result of you rebase 
git push -f  

在您的情况下,内容由 Jenkins 处理,rebase 可能是它停止工作的一个很好的理由。


如何查看是否有变基

检查 2 个分支(本地与远程)之间的差异

# fetch all remotes if you have multiple ones
git fetch --all

# check the diff between the 2 branches (2 ..)
git diff localBranch..origin/remoteBranch


# check the diff between the 2 branches (3 ..)
git diff localBranch...origin/remoteBranch 

您可以阅读更多关于 git 差异