如何解决如果它不允许我如何在 git 日志中删除提交?
我正在尝试删除和移除图片中突出显示的提交。但是,当我进行交互式 rebase 并删除提交时,它只会使链变得更加复杂。如何在没有我突出显示的提交的情况下进行一行提交?顺便说一下,一些提交可能有相同的消息,但它们的源代码完全不同。请建议 gitkraken 和 CLI git 解决方案。
解决方法
须知:origin/master
(图中的第二位大师)不是您的。 远程跟踪分支的唯一工作是反映 GitHub 上的内容。它实际上是您获取/拉动和推送的媒介。您根本无法直接编辑远程跟踪分支 origin/master
。不过,真正的 master
是你的。
所以你需要做的第一件事就是将这些提交放到一个真正的分支上,我们不妨使用 master
本身作为真正的分支:
-
在
master
,创建一个新的分支来占据你的位置;我们称之为temp
。 -
现在,仍然在
master
上,执行reset --hard
以“删除控制台日志记录”(图中较高的那个)。我们特意跳过了不需要的合并提交,因此它将在稍后与其他“删除的控制台日志记录”一起被根除。
好的,现在您想要重新洗牌的所有早期提交都在 master
上,我们可以进行重新洗牌:
-
从“广播输入”开始重新设置交互式,然后删除“用户输入”。
-
现在
git cherry-pick temp
,然后强制删除temp
分支;你不再需要它了。
现在 master
看起来像您想要的样子!
所以现在您可以推送,从而将远程跟踪 origin/master
与其协调;但你将不得不使用武力,因为你改写了历史。如果您与他人共享此分支,这会产生严重(可能是灾难性的)后果,但这些后果隐含在所提出的问题中,我们对此无能为力。
这个故事的真正寓意是,不要推动主分支,直到你的历史真的是你想要的方式。如果您不知道您的历史记录是否已解决,请使用更多分支进行试验,直到您确实知道为止。不得不重写你已经推送到 GitHub 的东西是一种非常糟糕的味道,表明你的工作习惯是不正确的。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。