2014-01-20 63 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看到將執行的命令,並確保它們看起來合理。