在 master 上清理 git 历史记录的正确方法
Posted
技术标签:
【中文标题】在 master 上清理 git 历史记录的正确方法【英文标题】:Proper way to clean git history on master 【发布时间】:2017-01-29 15:28:43 【问题描述】:我在“master”分支上。 我有这样的 git 历史:
333 (#82)
444 (#83)
然后我做了一些提交和还原(222->111->010->789->456->123):
123 Revert "(#84)"
456 Revert "(#81)"
789 Revert “(#81)"
010 Revert "(#86)"
111 (#86)
222 (#84)
333 (#82)
444 (#83)
我需要以某种方式清除那些错误的步骤 (222->111->010->789->456->123) 以将历史记录返回:
333 (#82)
444 (#83)
如果我这样做可以吗:
git rebase -i 333
并且会丢弃错误的提交? 那么
git push -f
【问题讨论】:
你推送提交和恢复了吗? How to revert Git repository to a previous commit?的可能重复 【参考方案1】:假设您没有推送提交和恢复, 执行以下操作:
git reflog
这将为您提供按时间倒序排列的操作列表(包括所有还原和提交)。找到最后一个稳定提交并以HEAD@somenumber
的形式找到它的头部。然后回退到该提交,请执行以下操作:
git reset --hard HEAD@somenumber
【讨论】:
我想他已经知道哈希了,也就是333
,所以命令应该是git reset --hard 333
以上是关于在 master 上清理 git 历史记录的正确方法的主要内容,如果未能解决你的问题,请参考以下文章