我的功能分支上总共进行了44次提交。 最近的24次提交中有我的。剩下的旧提交我需要删除。 那些由于错误的rebase操作而出现在分支上,由我执行。 我确定我的提交是最新的,并且在git日志列表中并显示在顶部。
请帮助。
答案 0 :(得分:1)
首先,可能在错误重新设置基准之前检查reflog的状态可能比尝试修复导致的混乱更容易。
git reflog
# spot the commit you want to go back to, then
git reset --hard <goodCommit>
# or the more cautious alternative, creating a new branch from the state to recover
git checkout -b <recovery-branch> <goodCommit>
但是,如果由于某种原因无法使用reflog解决方案来回答这个问题,如果您已经清楚地确定了要保留在分支中的提交,只需从预期的基础上重新创建一个分支,然后执行Cherry-重新选择提交内容:
git checkout -b <new-branch> <base-branch>
# with the oldest good commit you spotted on the failed branch
git cherry-pick <oldestGoodCommit>^..<failed-branch>
(在这里注意^
,它的作用是引用提交的父对象)
(而且..
不是占位符或其他任何东西,实际上是范围选择的标志。A..B
的意思是“ B
中的所有内容除了在A
“)
但是,如果您选择此解决方案,请为沿途的潜在冲突做准备(这本来不是一件坏事,但与替代方法相比可能会付出很多努力)。