我的功能分支上总共有 44 次提交。 最新的 24 个提交是我的。我需要删除剩余的旧提交。 由于我执行了错误的 rebase 操作,这些出现在分支上。 我确信我的提交是 git 日志列表中的最新提交并显示在顶部。
请帮忙。
最佳答案
首先,检查您的 reflog 可能会更容易一些。对于错误 rebase 之前的状态,而不是尝试修复由此产生的困惑。
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>
但是,要回答是否由于任何原因无法使用引用日志解决方案的问题,如果您已经清楚地确定了要从分支中保留的提交,只需从预期的基础重新创建一个分支,然后樱桃-重新选择您的提交:
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
上的所有内容”)
但是,如果您选择此解决方案,请为潜在的冲突做好准备(这本身并不是一件坏事,但与替代方案相比可能会花费大量精力)。
关于Git 如何在功能分支上保留最新的 N 次提交并删除所有内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57042552/