答案 0 :(得分:0)
git reset --hard HEAD~1
这将重置您的工作分支,然后您需要将其推送到bitbucket。所有本地更改都将被删除,请注意使用它。
答案 1 :(得分:0)
常规git工作流基于时间总是向前发展的假设。因此,标准做法是不删除提交,因为您必须为此重写历史记录。而是添加新提交以撤消更改。甚至还有命令:git revert
。
实际上删除提交是一个不同的故事,它可能很容易或很困难,具体取决于跟随它的提交,分支和合并的数量。在最简单的情况下,您只有一个分支,没有合并,也没有依赖于您要删除的提交的更改。在其他情况下,您可能会遇到很多冲突,甚至可能选择在提交后牺牲整个历史记录。我不知道你的情况如何。
在最简单的情况下,假设您当前的分支是master
并且您要删除提交C
,并且您从C
到master
的历史记录是线性序列提交,D
是C
之后的提交,您可以这样做:
git checkout -b temp C~1
git cherry-pick D..master
git branch -f master
git checkout master
git branch -D temp
git push -f origin master
小心但是,这会打破除你的以外的任何存储库,他们将不得不重做他们的工作。除非你一个人工作,否则不推荐。
第二个注意事项:如果您尝试删除敏感信息(例如意外提交的密码),由于git在内部的工作方式,这实际上可能无法删除数据。
答案 2 :(得分:0)
您可以通过删除提交并强制将更新后的分支推送到远程来实现。注意:请小心其他人是否结帐了分支。
假设您的历史记录如下,并且您要删除提交200:
提交300提交200提交100
执行以下操作:
git rebase -i HEAD~3
现在,删除提交200行。
保存文件,然后将分支强制推到远程:
git push -f origin <branch_name>