Git:如何回放远程源上的Master分支

pet*_*iss 3 git push

当我在一个私人项目上寻找bug并将它们推送到远程源(我自己的私人vps)时,我向Master分支做了5次提交.

然后我看到提交4和5将在其他地方引起麻烦,我需要撤消它们,所以我再次检查提交3,从那一点做了一个新的分支"Dev",并做了一些提交正确解决问题.

然后我做了

git reset - hard HEAD~2在Master上把它拉回到我分支开发的那一点.

然后我做了git merge to fast forward Master回到Dev分支的末尾.

所以现在我有一个本地存储库,Dev和Master都指向同一个最新版本的项目,并带有最新的bug修复.

问题是,当我尝试将项目现在推送到原点时,它会失败并给出一条错误消息:

![拒绝]主 - >主(非快进)错误:未能将某些引用推送到'myserver ... myproject.git'

我做错了什么,我该如何解决?

谢谢

Tes*_*rex 5

它只是不喜欢这样一个事实,即你所推动的分支并不是你所推动的东西的祖先.

如果您确定要这样做,只需在推送中添加-f标志(强制)即可.

  • 值得重复的是:你正在做的是,你正在重写历史.就像在现实生活中一样,你*可以*重写历史,但你需要一个阴谋才能做到这一点.IOW:每个人都必须"参与"它,即每个人都必须同意重写历史.("每个人"的意思是"每个人都从存储库中撤出,甚至是过渡性的".) (3认同)
  • 通过"如果你确定"我们的意思是:如果这是一个私人项目,如果它是一个公共项目,但你知道没有人从这个分支中撤出,或者错误是如此严重以至于值得让其他人麻烦修复它这种方式而不是添加纠正提交. (2认同)