我知道这个问题已经被问过多次,但要么场景有点不同,要么我无法真正理解它。
基本上,我的 git 历史记录看起来像这样:
Merge A
Commit B
Merge C
Commit D
Commit E
Merge F
Commit G
Commit H <-- What i want
合并 A 目前是最新的,我想恢复 3 次合并和所有提交,直到“H”。
我到底如何按顺序恢复合并请求和提交,以便我的代码现在处于“提交 H”状态?之后我可以将这些恢复推送到原点。
git reset --hard my_branch^~^~2^~2
插入符号 (^) 允许您从合并提交引用父提交。
^ 确定您想要哪位家长;例如,d921970^2 表示“d921970 的第二个父级”。此语法仅适用于具有多个父级的合并提交 — 合并提交的第一个父级来自合并时所在的分支(通常是 master),而合并提交的第二个父级来自该分支已合并(例如,主题)。
波浪号 (~) 允许引用线性历史记录中的父提交。
指第一个父级,因此 HEAD~ 和 HEAD^ 是等价的。当您指定数字时,差异就会变得明显。 HEAD~2 表示“第一个父级的第一个父级”或“祖父母” — 它按照您指定的次数遍历第一个父级