如果连续 2 次 git 恢复到头部会发生什么?

问题描述 投票:0回答:1

所以我首先进行 1 次提交并合并到 main,假设这是 sha1。 然后发现我犯了一个错误,所以我做了“git revert sha1”回到原来的sha0。

这会生成新的 sha2,其日志显示

Revert "Merge branch 'my-branch-1' into 'main'"

然后我创建了一个新分支 my-branch-2 来修复我的错误,它来自主分支。所以我在这个分支中做了“git revert sha2”。它的日志说

Revert "Revert "Merge branch 'my-branch-1' into 'main'""

那么我现在回到sha1了吗?

(我的目标是修复第一次提交中的错误,然后再次将我的更改合并回 main)

git
1个回答
0
投票
Git 中的每个

commit都引用一个tree。如果您调用恢复,则会通过反向应用提交与其父级之间的差异来创建新的提交(和树)。

如果您恢复 HEAD 提交,您仍然会得到一个新的提交,但它将引用与 HEAD 的父级相同的树(因为 HEAD 及其父级的反向差异将再次为您提供父级树)。如果你再次恢复恢复,你就会再次拥有(旧的)HEAD 树。

C1->T1 (commit 1, tree 1) C2->T2 (commit 2, tree 2) RC2->T1 (revert of commit 2, tree 1) RRC2->T2 (revert of revert of commit 2, tree 2)
    
© www.soinside.com 2019 - 2024. All rights reserved.