我使用了git commit --amend来修改之前的提交。然后当我推送我的更改时,由于“不是快进”错误而被拒绝。我已经寻找答案。不幸的是,像git pull --rebase
,git fetch origin
这样的命令都无法解决问题。如果我的本地repo中没有冲突,那么为什么我的推送失败了。
如果你发布了一个提交并且其他人获取了它,那么这个提交会一直存在。当你修改或者变基时,你会创建一个新的提交并忘记旧的提交。但是,当其他人已经有了旧的提交时,它将不会被更新。因此,当他们后来合并时,这两个版本的提交将合并导致混乱。
通过这个错误,git 防止你无意中推送已经发布的修改版本。
有一些例外情况。如果你正在推送到没有人使用的备份,你可以在那里推送新的历史记录(称为倒回)。而如果有一个分支被宣布为被倒回(例如 git 的 "pu" 分支和所有尚未进入 "next" 的主题),明显可以进行倒回。
如果你确定这样做不会引起问题,你可以告诉 git 继续倒回,方法如下:
git push -f
如果远程配置为镜像,则默认也是如此。
请注意,某些存储库可通过钩子进行配置,以禁止倒带或无论如何禁止倒带某些分支。
git rebase -i
命令来“压缩”已经推送到远程仓库的一系列提交? - dgnuff