从分支中删除特定提交

Remove a specific commit from a branch

如何在推送后从分支中删除特定提交?

假设我在名为 v0.1 的远程存储库中有这样的历史记录(从最新到最旧),我想从 v0.1 中删除 765th4,而不从中删除它其他分支。我该如何实现?

2fsf34 
32t6e0
54r346
765th4
9r34gg

谢谢!

这里最安全的选择是 不是 实际上从 v0.1 分支中删除 765th4 提交,而是 revert 它使用 git revert。尝试以下命令:

# from v0.1 branch
git revert 765th4

如果您 运行 git log 在 运行 完成以上操作后,您会注意到 new 提交已提交给您的 v0.1 分支,这样历史现在看起来像:

abc123
2fsf34 
32t6e0
54r346
765th4
9r34gg

此处 abc123 是还原提交的 SHA-1,它现在位于 v0.1 分支的 HEAD 上。此提交在功能上撤消了 765th4 提交引入的所有内容。这与完全删除 765th4 提交具有相同的效果,没有潜在的不良副作用。

如果你真的想删除 765th4 提交,你可以进行交互式变基。但是,对于您已经推送到远程的分支,通常不建议这样做。原因是重写历史可能会给除您之外的任何人带来问题,他们可能已经在使用 v0.1 分支。因此,在这里坚持使用 git revert 以获得简单而安全的选择。