gpt4 book ai didi

git - 如何还原倒数第二个提交而不是最后一个提交?

转载 作者:IT王子 更新时间:2023-10-29 00:53:32 27 4
gpt4 key购买 nike

假设我有四个提交 A-->B-->C-->D 但 C 被严重误导了。如何在不丢失 D 的更改的情况下撤消 C?我了解 git-revert 的基本功能和 undoing commits ,但我无法弄清楚如何(如果可能的话)撤消特定提交(不是最新的)而不必重做之后的更改。

最佳答案

还原

git revert 命令的设计正是为了做到这一点。

git revert <hash for C>

这将创建一个新的提交来反转 C 中的更改。

改写历史

您还可以改写历史。通常不推荐这样做,只有在您有充分理由实际从历史记录中删除提交(例如,如果它包含密码或其他内容)时才应使用。

git rebase -i <hash for B>

在编辑器中,只需删除带有 C 哈希值的行。如果您已经推送,则通常的注意事项适用。

非交互式

从技术上讲,所有这些选项都涉及某种 merge 解决方案,这意味着它们不能真正成为非交互式的。唯一的区别是由此产生的历史。使用 git revert 你会得到一个看起来像这样的历史:

A -> B -> C -> D -> E
^
+--- reverts C

使用 git rebase,您最终会得到如下所示的历史记录:

A -> B -----------> E

你当然可以只做 git rebase --onto B C,而不是 git rebase -i,但这仍然是一个交互式的过程,因为您必须手动解决 merge 策略无法自动解决的任何 merge 冲突。

关于git - 如何还原倒数第二个提交而不是最后一个提交?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41600326/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com