删除通过将名称更改为另一个提交而创建的提交
Remove commit created by changing name to another commit
当我试图更改刚创建的提交的名称时,我正在使用 GitKraken。我以为它只会更改名称,但它创建了另一个提交。我不知道我当时做了什么,但我有以下情况:
我想删除右边的那两个提交:'Detector - Tf-idf similarity' 和 'WIP on master: Auto...' 这样我只有一列与其他 4 个提交堆叠在一起。 Head 是我希望出现在图表上的最后一次提交,'Added tf-idf similarity'。
是否可以从项目中完全删除这些提交?
编辑:
如果我使用 GitKraken 的 'reverse commit' 选项会解决问题还是只会让问题变得更糟?
通常,使用 git revert
撤消一个或多个提交是首选方法。这样做的主要原因是,一旦发布了一个分支,实际删除较早的提交可能具有破坏性。相反,git revert
命令在分支之上创建了一个 new 提交,它在功能上撤消了一些较早的提交。它可能被认为是一些早期提交的镜像。
在 Gitkraken 中,您可以通过右键单击提交节点然后选择 Revert commit
来还原提交。有关详细信息,请参阅 documentation。
你的问题是在你的 "old" 之上仍然有一个隐藏,即预重命名提交:WIP on master: Auto stash before...
行。阅读有关隐藏的内容 here。如果您删除存储,旧的提交将消失。当然,您应该在删除隐藏之前检查隐藏的更改是否仍然相关。 Git 将在某些点自动存储未提交的更改,就像您的情况一样,它在还原之前就做了。
由于 git 提交是通过 SHA 哈希识别的,因此更改旧提交的消息 必须 来创建新提交,因为哈希是使用(其中其他因素)提交信息。
在这种情况下不需要还原。正如@TimBiegeleisen 所说,当然,您不应该更改以任何方式发布的提交,但像您在此处所做的那样重命名本地提交是可以的,完全没有理由担心。
请注意,仅因为来自 GitKrakens 提交图的提交 "disappears" 并不意味着它将被完全删除;只是无法从您当前的任何分支 HEAD
访问它。提交会持续一段时间,如果重置或变基出错,这通常是一个非常有用的功能。
当我试图更改刚创建的提交的名称时,我正在使用 GitKraken。我以为它只会更改名称,但它创建了另一个提交。我不知道我当时做了什么,但我有以下情况:
我想删除右边的那两个提交:'Detector - Tf-idf similarity' 和 'WIP on master: Auto...' 这样我只有一列与其他 4 个提交堆叠在一起。 Head 是我希望出现在图表上的最后一次提交,'Added tf-idf similarity'。
是否可以从项目中完全删除这些提交?
编辑:
如果我使用 GitKraken 的 'reverse commit' 选项会解决问题还是只会让问题变得更糟?
通常,使用 git revert
撤消一个或多个提交是首选方法。这样做的主要原因是,一旦发布了一个分支,实际删除较早的提交可能具有破坏性。相反,git revert
命令在分支之上创建了一个 new 提交,它在功能上撤消了一些较早的提交。它可能被认为是一些早期提交的镜像。
在 Gitkraken 中,您可以通过右键单击提交节点然后选择 Revert commit
来还原提交。有关详细信息,请参阅 documentation。
你的问题是在你的 "old" 之上仍然有一个隐藏,即预重命名提交:WIP on master: Auto stash before...
行。阅读有关隐藏的内容 here。如果您删除存储,旧的提交将消失。当然,您应该在删除隐藏之前检查隐藏的更改是否仍然相关。 Git 将在某些点自动存储未提交的更改,就像您的情况一样,它在还原之前就做了。
由于 git 提交是通过 SHA 哈希识别的,因此更改旧提交的消息 必须 来创建新提交,因为哈希是使用(其中其他因素)提交信息。
在这种情况下不需要还原。正如@TimBiegeleisen 所说,当然,您不应该更改以任何方式发布的提交,但像您在此处所做的那样重命名本地提交是可以的,完全没有理由担心。
请注意,仅因为来自 GitKrakens 提交图的提交 "disappears" 并不意味着它将被完全删除;只是无法从您当前的任何分支 HEAD
访问它。提交会持续一段时间,如果重置或变基出错,这通常是一个非常有用的功能。