GitHub - 删除推送的提交而不影响本地存储库

时间:2016-07-19 17:24:53

标签: git github

在不影响我的本地存储库的情况下从GitHub中删除提交的最佳方法是什么,因为我做了一些我希望保留的提交?

Github存储库有两个错误的提交,我希望在保留我的本地存储库的提交时删除。

1 个答案:

答案 0 :(得分:4)

假设当前存储库状态为:

server:         A---B---C---D
                            ^master

workstation:    A---B---C---D
                            ^HEAD
                            ^master
                            ^origin/master

理想状态是这样的:

server:         A---B
                    ^master

workstation:    A---B---C---D
                            ^HEAD
                            ^master
                    ^origin/master

然后你可以做到这一点:

$ git push --force origin bbbbbbbb:master

其中bbbbbbbb是B的提交哈希。

注意:

  • 与所有--force一样,请小心。你可以让自己进入一个难以摆脱的地方。
  • 确保所有团队成员都知道您正在做什么。如果他们在您推送后没有正确更新自己的存储库,他们可能会无意中将C和D直接推回存储库。
  • 如果任何其他标签/分支指向提交C和D,它们仍然可以通过那里访问。
  • 提交C和D,其中的所有更改可能不会立即删除。它们将在未定义的时刻在垃圾收集过程中被删除。