git-amend - git commit --amend 后出现 Git not-fast-forward 错误

标签 git-amend git

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

最佳答案

永远不要修改或改变你已经发布的提交!

如果您发布了一个提交,而其他人获取了它,则该提交将保留在那里。当您修改或 rebase 时,您创建了一个新的提交并忘记了旧的。但是当其他人已经有旧的提交时,它不会为他们更新。因此,当它们稍后 merge 时,提交的两个版本将 merge 造成严重破坏。

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

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

如果你确定你不会因此而引起问题,你可以告诉 git 继续并通过使用倒带

git push -f

它也是配置为镜像的 Remote 的默认设置。

请注意,某些存储库可以配置 hook 以禁止倒带或无论如何禁止倒带某些分支。

关于git-amend - git commit --amend 后出现 Git not-fast-forward 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21316534/

相关文章:

git fake merge(将提交标记为 merge 而没有真正的 merge )

python - 从 python 克隆 git repo

git - 从 master 更改为新的默认分支 git

git - 从 git rev-list 格式中排除 Preceding Commit> 行

git - 如何忽略 `git stash -p` 中添加的帅哥

git:更改文件中的一行以获得完整的历史记录

git - 为什么 git amend 在没有什么要修改的时候不警告你?

Git commit --amend merge 两个提交

git - 为什么 git-stash 选项没有以破折号为前缀?