需要从位桶中删除特定提交

时间:2017-10-19 06:31:56

标签: git

我在远程分支中有一个提交,我想删除该提交。有什么办法吗?我是这个分支的唯一用户。下面是一个截屏。

Click here to view the screen  shot

3 个答案:

答案 0 :(得分:0)

  git reset --hard HEAD~1

这将重置您的工作分支,然后您需要将其推送到bitbucket。所有本地更改都将被删除,请注意使用它。

答案 1 :(得分:0)

常规git工作流基于时间总是向前发展的假设。因此,标准做法是不删除提交,因为您必须为此重写历史记录。而是添加新提交以撤消更改。甚至还有命令:git revert

实际上删除提交是一个不同的故事,它可能很容易或很困难,具体取决于跟随它的提交,分支和合并的数量。在最简单的情况下,您只有一个分支,没有合并,也没有依赖于您要删除的提交的更改。在其他情况下,您可能会遇到很多冲突,甚至可能选择在提交后牺牲整个历史记录。我不知道你的情况如何。

在最简单的情况下,假设您当前的分支是master并且您要删除提交C,并且您从Cmaster的历史记录是线性序列提交,DC之后的提交,您可以这样做:

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>

这完全适合我。 参考:Completely remove commit from Bitbucket history