Git 完全删除以前的提交

Git 完全删除以前的提交,git,git-commit,git-reset,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 我如何做

考虑以下提交历史记录:

* 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
是正确的做法吗

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

否:
git-rebase-i 2c8bb78
is

您可以在交互式重基会话中删除额外的提交。(如果您想完全放弃1425cf8引入的功能)
或者您可以挤压这两个提交

为此,在交互式会话中(请参见“”):

  • 为627f412前面的壁球添加一个
    s
注意:最终结果将不是627f412:新提交将具有不同的SHA1,因为其内容将不同。

您可以将头部重置为
2c8bb78
,然后提交更改。 或者在2c8bb78上重新设置基址并挤压到另外两个提交(
627f412
1425cf8


使用
reset--hard
,您可能会丢失所做的修改。

VonC下面是当I
git rebase-I 2c8bb78
时发生的情况。此时将打开一个编辑器窗口。使用以下命令:pick 1425cf8添加了一些文件pick 627f412 final commit我删除了第一行。保存了文件。这导致:错误:无法应用627f412。。。我做错什么了吗?我有git rebase--中止以返回原始状态请参见:您想删除1425cf8更改,还是用627f412压扁它们?VonC也可以。这是一个本不应该发生的承诺。此外,627f412提交是我想要的,它包含了1425cf8的所有内容anyway@deshmukh好啊那就从壁球开始吧:看我编辑过的答案。哇,我是按照你修改过的答案做的。但是,没有运气。它产生的错误与我第一次评论中的错误完全相同。我又做了一次流产手术,让事情恢复到原来的状态。请参阅我对@VonC的VonC回答的评论。为了简单起见,你能详细说明一下答案吗?