问题说明
我删除了名为" cert1"的分支,然后添加了一个具有相同名称的分支并将其提交(可能在推送删除操作之前)。然后,在试图推动这个时,我得到了这个错误 -
! [rejected] cert1 -> cert1 (non-fast-forward)
背景
我是git的新手。
我正在尝试使用git和phing。我正在做一个POC我正在使用生产服务器作为git工作副本。我的构建脚本运行git checkout / pull命令,具体取决于我的生产所在的分支,以及我在生产中推出的分支。
我正在查看可能出现的所有用例。一个这样的情况是生产服务器位于分支A中(在最后一次推出期间)。然后,在下一个卷展栏之前,分支A被删除(从开发环境),并且再次创建具有相同名称的分支(我假设这是可能的)。如果现在需要推出这个怎么办?我现在需要办理结账吗?
答案 0 :(得分:2)
通常情况下,推送是快进的,因为远程历史记录应该是本地历史记录的前缀,默认情况下,遥控器会拒绝推送,直到这是真的。这是您在远程拒绝推送时看到的行为。正常的修正是首先拉动然后推动,这样远程历史就成为历史的前缀。
在您的情况下,删除和重新创建后两个分支的历史记录可能完全不同,您必须强制推送(git push -f
)以覆盖远程历史记录,如果这是您正在尝试的要做。
但是,您必须确保您确实要完全覆盖远程分支的历史记录并使其与您自己的历史记录相同;否则你不应该这样做。
等效的解决方案是在按
之前手动删除远程分支 git push origin :cert1 # Delete the remote
git push origin cert1