完全删除先前的提交

时间:2016-09-27 06:34:35

标签: git git-commit git-reset

考虑以下提交历史记录:

* 627f412 (HEAD -> master) final commit
* 1425cf8 added some file
* 2c8bb78 initial commit

在这些提交期间,不会推送存储库。

第二次提交1425cf8是不必要的提交。我想完全删除该提交。

因此,新日志将如下所示:

* 627f412 (HEAD -> master) final commit
* 2c8bb78 initial commit

我如何实现这一目标?

在这种情况下,git reset --hard HEAD~1是正确的做法吗?

2 个答案:

答案 0 :(得分:2)

  

git reset - hard HEAD~1在这种情况下做的正确吗?

否:git rebase -i 2c8bb78是。

您可以在交互式rebase会话中删除额外提交。 (如果你想完全放弃1425cf8引入的内容)
或者你可以压缩两个提交。

为此,在交互式会话中(参见" Git Tools - Rewriting History"):

  • 在627f412
  • 前面为壁球添加s

请注意,最终结果将为627f412:新提交将具有不同的SHA1,因为其内容将有所不同。

答案 1 :(得分:0)

您可以将HEAD重置(--hard!)到2c8bb78,然后提交更改。 或者在2c8bb78上重新定义并压缩到另外两个提交(627f4121425cf8)。

使用reset --hard,您可能会失去修改。