【问题标题】:Remove commit created by changing name to another commit删除通过将名称更改为另一个提交创建的提交
【发布时间】:2019-09-21 00:04:39
【问题描述】:

当我尝试更改刚刚创建的提交的名称时,我正在使用 GitKraken。我认为它只会更改名称,但它创建了另一个提交。我不知道我当时做了什么,但是我有以下情况:

我想删除右侧的这两个提交:“检测器 - Tf-idf 相似性”和“主设备上的 WIP:自动...”,这样我只有一列与其他 4 个提交堆叠。 Head 在我想出现在图表上的最后一个提交上,“添加了 tf-idf 相似性”。

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

编辑:

如果我使用 GitKraken 的“反向提交”选项会解决问题还是只会让问题变得更糟?

【问题讨论】:

  • 你愿意尝试使用命令行来解决这个问题吗?
  • 我真的不介意它删除提交并反映在 GitKraken 图@shadowtalker

标签: git git-commit gitkraken


【解决方案1】:

通常使用git revert 撤消一个或多个提交是首选方法。这样做的主要原因是,一旦发布了一个分支,实际上删除一个较早的提交可能是具有破坏性的。相反,git revert 命令会在分支顶部创建一个 new 提交,该提交在功能上撤消了一些较早的提交。它可以被认为是一些早期提交的镜像。

在 Gitkraken 中,您可以通过右键单击提交节点然后选择 Revert commit 来恢复提交。请参阅documentation 了解更多信息。

【讨论】:

    【解决方案2】:

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

    由于 git 提交是通过 SHA 哈希标识的,因此更改旧提交的消息必须创建一个新的提交,因为哈希是使用(以及其他因素)提交消息计算的。 p>

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

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

    【讨论】:

      猜你喜欢
      • 2015-04-21
      • 2019-07-31
      • 2014-06-13
      • 2021-02-27
      • 2016-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-10
      相关资源
      最近更新 更多