收到一只叮咚
您应该能够强制您的本地版本到远程回购程序,通过使用git push -f (如:git push -f origin master)。停下来和将强制推送所有已设置的本地分支。--set-upstream.请注意,如果其他人共享这个存储库,他们的修订历史将与新的存储库发生冲突。如果在更改后有任何本地提交,则它们将无效。更新:我想加个旁白。如果您正在创建其他人将检查的更改,那么创建一个具有这些更改的分支并定期重新定位以使其与主开发分支保持最新的情况并不少见。只要让其他开发人员知道这种情况会定期发生,他们就会知道该期待什么。更新2:由于越来越多的观众,我想补充一些关于当您upstream确实经历过一次力推。假设我克隆了您的回购程序,并添加了一些提交,如下所示: D----E topic
/
A----B----C development但后来development分支被一个rebase,这将导致我在运行时收到类似的错误。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.在这里我可以解决冲突commit但这将给我留下一个非常丑陋的承诺历史: C----D----E----F topic
/ /
A----B--------------C' development使用起来可能很诱人git pull --force但是要小心,因为这会让你陷入困境: D----E topic
A----B----C' development所以最好的选择就是git pull --rebase..这将要求我像以前一样解决任何冲突,但是对于每一步,我将使用git rebase --continue..最后,提交历史看起来要好得多: D'---E' topic
/
A----B----C' development更新3:您还可以使用--force-with-lease作为一种“更安全”的力量推进,正如丘派克在他的回答中所提到的:使用“租约”的强制推送允许在远程上有新的提交时失败(从技术上讲,如果您还没有将它们提取到远程跟踪分支中),如果您不想意外地覆盖其他您甚至不知道的提交,并且只想覆盖您自己的提交,这是很有用的:git push --force-with-lease您可以了解有关如何使用--force-with-lease通过阅读下列任何一项内容:git push文献资料GIT:如何忽略快速转发并将原点[分支]还原为早期提交?