所以我首先进行 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)
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)