微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如果它不允许我如何在 git 日志中删除提交?

如何解决如果它不允许我如何在 git 日志中删除提交?

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

enter image description here

这是我正在寻找的图表

git log diagram

编辑 这是更新的图

enter image description here

解决方法

须知: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 的东西是一种非常糟糕的味道,表明你的工作习惯是不正确的。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。