删除分支并创建同名分支并尝试推送后推送被拒绝

Push rejected after deleting a branch and creating one by the same name and trying to push it

问题描述

我删除了这个名为 "cert1" 的分支,然后添加了一个同名的分支并提交了它(可能在推送删除操作之前)。然后,在尝试推送时,我收到此错误 -

 ! [rejected]        cert1 -> cert1 (non-fast-forward)

背景

我是 git 的新手。

我正在尝试将 git 与 phing 结合使用。我正在做一个 POC,我将生产服务器用作 git 工作副本。我的构建脚本运行 git checkout/pull 命令,具体取决于我的生产所在的分支,以及我在生产中推出的分支。

我正在研究所有可能出现的用例。一种这样的情况是生产服务器位于分支 A 中(在上次推出期间)。然后,在下一次推出之前,分支 A 被删除(从开发环境中),并再次创建一个具有相同名称的分支(我认为这是可能的)。如果现在需要立即推出怎么办?我现在需要结账吗?

通常情况下,推送是快进的,因为远程历史应该是本地历史的前缀,并且远程默认情况下会拒绝推送,直到这是真的。这就是您在遥控器拒绝您的推送时看到的行为。正常的修正是先pull再push,这样远程history就成了你history的前缀


在你的情况下,两个分支的历史记录在删除和重新创建后可能完全不同,你必须强制推送 (git push -f) 以覆盖远程历史记录,如果那是你想要的正在努力做。

但是,您必须确定您确实想要完全覆盖远程分支的历史记录并使其与您自己的相同;否则你不应该这样做。

一个等效的解决方案是在推送之前手动删除远程分支

 git push origin :cert1 # Delete the remote
 git push origin cert1