我使用git commit --amend修改了之前的提交。在那之后,当我推动我的更改时,由于'not -fast-forward'错误,我被拒绝了。我找到了答案。不幸的是,git pull --rebase
,git fetech origin
等命令不起作用。如果我的本地仓库没有冲突,为什么我的推送失败。
答案 0 :(得分:5)
如果你发布了一个提交而其他人提取它,那么提交就会保留。修改或改组时,您创建一个新提交并忘记旧提交。但是当其他人已经拥有旧提交时,它将不会为它们更新。因此,当他们稍后合并时,提交的两个版本将合并造成破坏。
有了这个错误,git阻止你推送你已经错误发布的修改版本的提交。
规则有例外。如果你想要一个没有人工作的备份,你可以在那里推送新的历史(称为倒带)。如果有一个分支被宣布为倒带(例如git自己的“pu”分支以及所有主题尚未在“next”中),那么倒带显然很好。
如果您确定不会因此而导致问题,您可以告诉git继续使用
进行回放git push -f
对于配置为镜像的遥控器,它也是默认值。
请注意,某些存储库可以配置钩子以禁止倒带或禁止重绕某些分支。
答案 1 :(得分:2)
这是因为提交已经在远程仓库中,因此您必须rewrite history。
这意味着你必须进行强制推动:
git push -f
但要小心,如果你与其他人合作,他们会遇到麻烦,因为重写历史不是一件好事。