2013-04-03 96 views
3

有沒有一種很好的方式來改變我的Git工作副本的東西給定數量的提交前。如何更新我的git工作副本到以前的版本

E.g.看到3個提交到過去,像:

git reset HEAD - 3 

這裏的用例是,我只是想看看如果在當前工作副本失敗的試驗也沒有在我的最新承諾。我不一定要對以前的版本進行任何更改。然後我想將工作副本更改回最新的提交。

回答

5

如果你只是想看看先前提交(不改變你的分支/倉庫的狀態),使用git checkout

git checkout HEAD~3 

如果您決定要開發關閉這一點,然後可以分支。

git checkout -b specialFeature47 

要返回到現在,只需簽出您所在的分支名稱即可。

git checkout master 

厭倦了建議的git reset解決方案。那些實際上移動你的分支指針(有效地刪除這3個提交)。

+0

+1這應該是公認的答案,因爲這不會損害回購。 – tubaguy50035

+0

謝謝@TheBuzzSaw。這更像我想要實現的。我更新了我的問題,使其更加明確。 –

4

是的,這是可能的:

git reset --hard HEAD~3 
+0

謝謝丹尼爾。我在原來的問題中忘記提到我也想再次向前邁進。基本上,我只是想輕鬆地回滾和前進。這是什麼命令? –

+0

@KevinStembridge:沒有用於前滾的等效語法。您需要通過其他方式確定提交。例如,如果回滾之前的HEAD是分支的HEAD,則可以簡單地使用'git reset --hard '。否則,您可能需要在回滾之前標記當前頭部。最後,'git reflog'顯示HEAD的變化,所以你可以從這裏提取前一個HEAD的散列。 –

+0

見['gitrevisisons'](https://www.kernel.org/pub/software/scm/git/docs/gitrevisions.html),'@ {n}'和'@ { - n}'非常很有幫助。 – jthill

1

你總是可以做到:

git的結帳HEAD〜15

和移動15提交回來。當前的提示完全不受干擾,您可以四處移動,甚至可以構建該版本並檢查等。要返回,請執行git checkout mybranch。如果您想在那裏開始工作(並將原始分支留在冰上),您可以從git branch newbranch開始,並從現在開始使用newbranch

考慮你使用任何歷史的改寫指令(commit --amendrebasereset和這樣)之前在做什麼小心,有大量的損失工作存在的真正潛力。在git中分支是很便宜的,大部分可以通過倒回歷史來完成的事情可以通過創建一個從過去某處開始的新分支來完成,也許可以使用當前的master分支來切換它。在舊分支上完成的工作稍後可能會派上用場;如果不這樣做,無論如何,保持它的成本可能可以忽略不計。

相關問題