如果 git 日志不允许我删除提交,我该如何删除?

How can I drop commits in the git log if it isn't letting me?

我正在尝试删除并删除图片中突出显示的提交。但是,当我进行交互式变基并删除提交时,它只会使链更加复杂。如果没有我突出显示的那些,我怎么能有一行提交?顺便说一句,有些提交可能有相同的消息,但它们的源代码完全不同。请建议 gitkraken 和 CLI git 解决方案。

这是我正在寻找的图表 编辑 这是更新后的图

须知:origin/master(图表中的第二位主人)不是您的。它是 远程跟踪分支 ,其唯一的工作是反映 GitHub 上的内容。它实际上是您获取/拉取和推送的媒介。您根本无法直接编辑远程跟踪分支 origin/master。不过,真正的 master 是你的。

所以你需要做的第一件事就是将这些提交放到一个真正的分支上,我们也可以使用 master 本身作为真正的分支:

  1. master,创建一个新分支来保留你的位置;我们称它为 temp.

  2. 现在,仍然在 master,执行 reset --hard 到“删除的控制台日志记录”(图中较高的那个)。我们故意跳过不需要的合并提交,因此稍后将与其他“删除的控制台日志记录”一起根除。

好的,现在您要重新洗牌的所有早期提交都在 master 上,我们可以进行重新洗牌:

  1. 从“广播输入”开始重新设置交互基础,并删除“用户输入”。

  2. 现在git cherry-pick temp,然后强制删除temp分支;你不再需要它了。

现在 master 看起来像你想要的样子!

所以现在您可以推送,从而使远程跟踪origin/master与它协调;但你将不得不使用武力,因为你已经改写了历史。如果您与其他人共享此分支,这会产生严重的(可能是灾难性的)后果,但这些后果隐含在所提出的问题中,我们对此无能为力。

这个故事的真正寓意是,不要推动主分支,直到你的历史真的是你想要的那样.如果你不知道你的历史是否已经定下来,就用更多的分支去试验,直到你知道为止。必须重写您已经推送到 GitHub 的内容是一种非常难闻的气味,表明您的工作习惯不正确。