2014-01-20 41 views
0

我想将我的本地git存储库恢复到特定日期。通过恢复,我想保留所有直到那个日期和时间发生的提交和历史记录。将Git存储库恢复到特定日期

我可以放松在该日期和时间之后执行的更改和提交。 (假设2014年1月1日上午11:30)

这可能吗?

+3

这实际上是你可以用版本控制软件做的最基本的事情之一。你有没有考虑阅读一个git教程? – Cairnarvon

+0

@Cairnarvon我确实使用过'git reset --hard',但看起来只会重置分支。我想同时恢复所有分支。我试过看git教程,但没有找到很多恢复完整的回购本身。你能请教建议 –

+0

你有这么多的分支机构,你实际上需要自动化吗?您应该能够检查每个分支的reflog并找出该分支在该日期结束时的位置。 – meagar

回答

1
git reset --hard '[email protected]{2014-01-01 11:30:00}' 

这会重置您的主分支到最接近的提交时间。

1

要更新所有的裁判,您可以使用git for-each-ref这可以生成命令在每个裁判运行,然后管道输出到您的外壳。

git for-each-ref --shell \ 
    --format="git update-ref %(refname) %(refname)@{2014-01-01 11:30:00}" | sh 

运行如下命令任何时候,确保你有一个备份,以便能够如果出现错误恢复的存储库。此外,尝试一次,而不用管到sh看到将执行的命令,并确保它们看起来合理。