删除通过将名称更改为另一个提交创建的提交

时间:2019-05-02 12:51:56

标签: git git-commit gitkraken

当我尝试更改刚创建的提交的名称时,我正在与GitKraken合作。我以为它只会更改名称,但是却创建了另一个提交。我不知道当时的情况,但是有以下情况:

enter image description here

我想删除右边的这两个提交:“检测器-Tf-idf相似性”和“在站上的WIP:自动...”,这样我只有一列,而其他4个提交则堆叠在一起。头位于我要在图形上显示的最后一个提交上,“添加了tf-idf相似性”。

是否可以从项目中完全删除那些提交?

编辑:

如果我使用GitKraken的'reverse commit'选项,是否可以解决问题,还是会使情况变得更糟?

2 个答案:

答案 0 :(得分:1)

通常,首选使用git revert撤消一个或多个提交。这样做的主要原因是,一旦发布分支,实际上删除较早的提交可能会造成破坏。 git revert命令在分支的顶部创建了一个 new 提交,该提交在功能上撤销了一些较早的提交。可以将其视为早期提交的镜像。

在Gitkraken中,您可以通过右键单击提交节点,然后选择Revert commit来还原提交。有关更多信息,请参见documentation

答案 1 :(得分:1)

您的问题是您的“旧”文件顶部仍然有一个存储区,即重命名提交:WIP on master: Auto stash before...行。阅读隐藏here的内容。如果删除存储,旧的提交将消失。当然,您应该在隐藏存储之前检查隐藏的更改是否仍然有用。 Git会在某些时候自动存储未提交的更改,就像您在还原之前所做的一样。

由于git提交是通过SHA哈希标识的,因此更改了旧提交的消息来创建新的提交,因为哈希是使用(除其他因素外)提交消息计算的。

在这种情况下,无需还原。正如@TimBiegeleisen所说,您当然不应该更改以任何方式发布的提交,但是像在此所做的那样重命名本地提交是很好的,完全没有理由担心。

请注意,仅是因为提交从GitKrakens提交图中“消失”并不意味着它将被完全删除。只有您当前的任何分支机构的HEAD都无法访问它。提交会持续一段时间,如果重置或重新设置出错,这通常是非常有用的功能。

相关问题