将Git存储库还原到特定日期
我想将本地git存储库恢复到特定日期。通过恢复,我想保留所有的承诺和历史,直到该日期和时间发生 我可以放松在该日期和时间之后执行的更改和提交。(假设2014年1月1日上午11:30) 这可能吗将Git存储库还原到特定日期,git,Git,我想将本地git存储库恢复到特定日期。通过恢复,我想保留所有的承诺和历史,直到该日期和时间发生 我可以放松在该日期和时间之后执行的更改和提交。(假设2014年1月1日上午11:30) 这可能吗 git reset --hard 'master@{2014-01-01 11:30:00}' 这会将主分支重置为在此时间之前最近的提交 这会将您的主分支重置为在此之前最接近的提交。要更新所有引用,您可以对每个引用使用git,它可以生成在每个引用上运行的命令,然后将该命令的输出传输到shell git
git reset --hard 'master@{2014-01-01 11:30:00}'
这会将主分支重置为在此时间之前最近的提交
这会将您的主分支重置为在此之前最接近的提交。要更新所有引用,您可以对每个引用使用
git
,它可以生成在每个引用上运行的命令,然后将该命令的输出传输到shell
git for-each-ref --shell \
--format="git update-ref %(refname) %(refname)@{2014-01-01 11:30:00}" | sh
无论何时运行这样的命令,都要确保有备份,以便在出现问题时可以恢复存储库。另外,在没有管道的情况下尝试一次,以查看将要执行的命令,并确保它们看起来合理。要更新所有引用,可以对每个引用使用
git
,它可以生成在每个引用上运行的命令,然后将该命令的输出管道化到shell
git for-each-ref --shell \
--format="git update-ref %(refname) %(refname)@{2014-01-01 11:30:00}" | sh
无论何时运行这样的命令,都要确保有备份,以便在出现问题时可以恢复存储库。另外,在不使用管道的情况下尝试一次,以查看将执行的命令,并确保它们看起来合理。这实际上是版本控制软件最基本的功能之一。你考虑过阅读git教程吗?@Cairnarvon我确实使用了
git reset--hard
,但看起来它只重置了分支。我想同时恢复所有分支。我试着看git教程,但没有找到多少东西来恢复完整的回购协议本身。你能告诉我你有这么多的分支机构需要自动化吗?您应该能够检查每个分支的reflog,并找出该分支在该日期结束时的位置。不久前我问了一个类似的问题,检查这是否有帮助这是您可以使用版本控制软件执行的最基本的操作之一。你考虑过阅读git教程吗?@Cairnarvon我确实使用了git reset--hard
,但看起来它只重置了分支。我想同时恢复所有分支。我试着看git教程,但没有找到多少东西来恢复完整的回购协议本身。你能告诉我你有这么多的分支机构需要自动化吗?您应该能够检查每个分支的reflog,并找出该日期结束时分支所在的位置