我对github上托管的项目做了一些不好的提交。我用github的bfg工具删除了提交,然后推送到github并git克隆了我使用的各种本地机器上的项目。我的本地机器和github之间的一切都很正常。
但是,我部署到仍包含错误提交的遥控器。当我这样做时:
git push remote master
我收到此错误:
! [rejected] master -> master (fetch first)
error: failed to push some refs to 'git@remote:blah/blah.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
当我这样做时:
git push --force remote master
一切都按预期进行;但是,我每次都必须这样做。有没有办法告诉git覆盖遥控器上的master,以便在没有克隆的情况下丢弃糟糕的提交?
答案 0 :(得分:0)
错误意味着您在远程端有一些新的东西,而您在本地没有这些东西并根据您的评论:
问题是远程端的“新”提交很糟糕,需要丢弃。我不希望他们合并。
在这种情况下,--force
是覆盖“错误”提交的唯一方法。
但这也意味着你使用了错误的git工作流程。如果你这样做,你永远不应该对主人提出这些“坏”提交:
master
分支答案 1 :(得分:-1)
如果您只是向远程存储库添加新提交,则可以git push remote master
使用本地新提交更新远程存储库。但是,如果您不仅要添加新提交,而是删除或更新其中一些提交,则不允许git push
。在这种情况下,您需要git push --force remote master
替换(而不是更新)您的本地远程提交历史记录。