git是否可以通过清除reflog撤消所有更改?

时间:2018-11-15 14:07:04

标签: git undo

如何在两个月内撤消本地存储库中所有有效的更改(新分支,提交等)? Reflog历史记录也需要清除。

1 个答案:

答案 0 :(得分:0)

该问题将帮助您找到所需的提交:How do I view all commits for a specific day? 对于您的示例,此命令列出的第一个提交就是您想要的:

git log --until="2018-09-01"

然后,您可以使用@phd的建议并将沙箱重置为该提交的sha1:

git reset --hard <sha1>

警告:此重置命令还将您当前分支的HEAD移至该提交。这可能就是您想要的,但是您需要意识到这一点。

不幸的是,您必须一次为每个分支机构执行一次此操作,所以我意识到这不是您要寻找的全局解决方案。

至于引用日志,我研究了expire的作用,它清除了较旧的引用。我看不到如何删除reflog中的最新行,因为这与reflog的意图相反。但是,引用日志存储在.git/logs/HEAD中。从该文件中手动删除行是可行的,但是我找不到找到在特定日期之后的那些行的简便方法。如果您编辑此文件,请记住最新的条目位于结尾处,而不是像git reflog所示的开头。