git 推送被拒绝,可能是因为 rebase
git push rejected, maybe because of rebase
我有一个自动化的 Jenkins 作业,它只执行以下操作:
- 从
remoteA
拉取
- 推入
remoteB
remoteA
是开发人员实际推送代码的远程。
remoteB
从未被手动触及,它仅通过自动化作业接收更新。
有一段时间效果很好,但现在我在尝试推入 remoteB
时得到 Updates were rejected because the tip of your current branch is behind its remote counterpart.
据我所知,这种情况发生在
- (a)
remoteB
包含 remoteA
不包含的更改 -> 我认为这是不可能的,因为没有人和其他 Jenkins Job 触及 remoteB
- (b) 有人在 remoteA 上做了
rebase
。 -> 因为我不是 git 专业人士,所以我非常不确定如何处理这种情况。希望这里有人能帮忙。
如果你做了 rebase
修改了历史记录,所以你不能推送到远程,除非你想 overwrite 和 change 存储库的内容。
如果您仍想推送内容,则必须使用 -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 差异
我有一个自动化的 Jenkins 作业,它只执行以下操作:
- 从
remoteA
拉取
- 推入
remoteB
remoteA
是开发人员实际推送代码的远程。
remoteB
从未被手动触及,它仅通过自动化作业接收更新。
有一段时间效果很好,但现在我在尝试推入 remoteB
Updates were rejected because the tip of your current branch is behind its remote counterpart.
据我所知,这种情况发生在
- (a)
remoteB
包含remoteA
不包含的更改 -> 我认为这是不可能的,因为没有人和其他 Jenkins Job 触及 remoteB - (b) 有人在 remoteA 上做了
rebase
。 -> 因为我不是 git 专业人士,所以我非常不确定如何处理这种情况。希望这里有人能帮忙。
如果你做了 rebase
修改了历史记录,所以你不能推送到远程,除非你想 overwrite 和 change 存储库的内容。
如果您仍想推送内容,则必须使用 -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 差异