您应该能够使用强制对远程仓库进行本地修订
git push -f
(例如git push)。 离开git rebase --continue和git pull将强制推送已设置为--set-upstream的所有本地分支。
请注意,如果其他人共享此存储库,则其修订历史记录将与新存储库冲突。 如果他们在变更点之后有任何本地提交,他们将变为无效。
更新:我想我会添加一个旁注。 如果您要创建其他人将要审核的更改,那么创建具有这些更改的分支并定期重新定位以使其与主开发分支保持同步并不罕见。 只是让其他开发者知道这会定期发生,所以他们会知道会发生什么。
更新2:由于观众数量的增加,我想添加一些关于git push确实遇到强制推送时该怎么做的其他信息。
假设我克隆了你的repo并添加了一些提交,如下所示:
D----E topic
/
A----B----C development
但后来git push分支被git rebase --continue命中,这将导致我在运行git pull时收到类似的错误:
Unpacking objects: 100% (3/3), done.
From
* branch development -> FETCH_HEAD
Auto-merging
CONFLICT (content): Merge conflict in
Automatic merge failed; fix conflicts and then commit the result.
在这里我可以解决冲突和git push,但这会让我有一个非常丑陋的提交历史:
C----D----E----F topic
/ /
A----B--------------C' development
使用git push看起来很诱人,但要小心,因为这会让你陷入搁浅的提交:
D----E topic
A----B----C' development
所以最好的选择可能就是做一个git push.这将要求我像以前一样解决任何冲突,但对于每一步而不是提交我将使用git rebase --continue.最后,提交历史将看起来更好:
D'---E' topic
/
A----B----C' development
更新3:您还可以使用git push选项作为“更安全”的力量正如Cupcake所说的那样回答:
用“租约”强制推动可以使力推动失败 是远程的新提交,你没想到(技术上,如果 你还没有把它们带到你的远程跟踪分支中) 如果您不想意外覆盖其他人,则非常有用 承诺,你甚至还不知道,你只是想 覆盖你自己的:
git push
您可以了解有关如何使用git push的更多详细信息 阅读以下任何内容:
git push文档
Git:如何忽略快进并将原点[branch]恢复到之前的提交?