2012-10-31 92 views
1

我有一個git存儲庫,我從開發中推動並從測試和生產拉。恢復整個git存儲庫到一個特定的版本

說我到目前爲止做了17次提交,並且所有的服務器都在同步。
現在我想在生產中恢復提交#15,但不是only a (few) file(s):我希望生產服務器上的所有文件都反映提交#15。

我也不想爲此創建一個新的提交,並且還能夠前滾到最新的提交或其他來自中央存儲庫的提交。

我的第一個猜測是不宣而任何文件運行它,例如,

git checkout [commit-15-SHA1] 

有沒有更好/更安全辦呢?什麼是git方式

+2

您的建議命令完全是*執行此操作的方式。你遇到任何問題嗎? –

+0

我得到了一個「_你處於分離的HEAD狀態,你可以環顧四周,進行實驗性的改變並提交它們,並且你可以放棄你在這個狀態下做出的任何提交,而不會通過執行另一個結賬而影響任何分支。 ]_「 信息。我猜這是因爲我沒有提前儲藏? –

+1

不,「分離HEAD」狀態發生是因爲您當前的HEAD指向沒有任何其他名稱的提交。因此,如果您要根據當前位置進行新的提交,除了記下SHA1之外,您無法引用任何新提交。如果您不打算根據您當前的HEAD進行任何新的提交,則無需擔心。 –

回答

4

如果你想恢復,然後從提交#15分支,保持所有修訂提交後#完好無損,你的是一個好方法。

git checkout [Commit-15-SHA] 

如果你只是想「備份」在提交歷史,不失當前的變化,和最近兩年提交,然後嘗試軟復位。

git reset --soft [Commit-15-SHA] 

但是,如果你想用核武器炸一切,你變了,包括所有的修改承諾15,那麼你做一個硬復位。

git reset --hard [Commit-15-SHA] 

瞭解更多關於git reset的信息here

相關問題