3

我使用 git commit --amend 来修改之前的提交。之后,当我推送我的更改时,我被拒绝了,因为“not -fast-forward”错误。我有寻找答案。不幸的是,诸如 , 之类的命令git pull --rebase不起作用git fetech origin。如果我的本地仓库没有冲突,为什么我的推送失败了。

4

2 回答 2

5

永远不要修改或更改您已经发布的提交!

如果您发布了一个提交并且其他人获取了它,那么该提交就会保留下来。当你修改或变基时,你创建了一个新的提交而忘记了旧的。但是当其他人已经拥有旧的提交时,它不会为他们更新。因此,当它们稍后合并时,两个版本的提交将合并造成破坏。

有了这个错误,git 会阻止你推送你已经错误发布的提交的修改版本。

该规则有例外。如果您要推送到没人处理的备份,您可以在那里推送新的历史记录(这称为倒带)。如果有一个分支被宣布为倒带(例如 git 自己的“pu”分支和所有尚未在“next”中的主题),倒带显然没问题。

如果您确定不会因此而引起问题,您可以告诉 git 继续前进并使用

git push -f

它也是配置为镜像的遥控器的默认设置。

请注意,某些存储库可以使用钩子配置以禁止倒带或禁止倒带某些分支。

于 2014-01-23T19:00:39.977 回答
2

发生这种情况是因为提交已经在远程仓库中,因此您将不得不重写 history

这意味着您必须进行强制推动:

git push -f

不过要小心,如果您与其他人合作,他们会遇到麻烦,因为重写历史不是一件好事。

于 2014-01-23T18:34:22.997 回答