我需要恢復部署的本地更改。 (我使用svn revert
這個在舊的skool SVN天。)「git checkout -f」和「git reset --hard HEAD」有什麼區別?
而即時使用git reset --hard HEAD
爲此。 (同時git fetch
和git merge origin/$branch --no-ff
用於與上游分支同步)
但是有些文章指出git checkout -f
用於還原更改。
這些命令之間的關鍵區別是什麼。推薦哪種方式?
我需要恢復部署的本地更改。 (我使用svn revert
這個在舊的skool SVN天。)「git checkout -f」和「git reset --hard HEAD」有什麼區別?
而即時使用git reset --hard HEAD
爲此。 (同時git fetch
和git merge origin/$branch --no-ff
用於與上游分支同步)
但是有些文章指出git checkout -f
用於還原更改。
這些命令之間的關鍵區別是什麼。推薦哪種方式?
他們兩個具有完全相同的效果。我建議你選擇你更舒適的解決方案。
但是,如果在這種特殊情況下效果是相同的,不同的值將會完全不同。基本上(還有更多,請參閱鏈接的主題),如果將當前分支和HEAD移動到特定的提交但結帳時,只移動HEAD。有關更多詳情,請參閱下文
資源:
關於同一主題:
不具備代表其他答案尚未就此發表評論,我只是想補充一點,我碰到其中兩個命令不具有相同的情況下,就影響。我進入了一個奇怪的狀態,所以這絕對是一個邊緣案例。這是發生了什麼事:
我在一個分支,一切都乾淨。我檢查出主git checkout master
,並從git status
發現,現有文件未進行提交的更改(是的,在我剛剛簽出的代碼上)。我試圖回到一個乾淨的狀態,存儲聲稱已完成,但git status
仍然沒有改變。還試過git reset --hard HEAD
。它也報告成功完成,但狀況並沒有改變。我無法放棄這些奇怪的變化。
但是,git checkout -f
解決了這個問題。我能夠擺脫這種奇怪的狀態。所以,至少在某些方面,這兩者並不相同。
我剛剛有完全相同的情況。有一堆修改後的文件,git reset - hard HEAD不會離開,但git checkout -f的確如此,所以它們在某些級別顯然不一樣。 – 2014-07-09 14:42:35
在我們的案例中,這是由於文件權限的變化造成的;這個固定它http:// stackoverflow。COM /問題/ 1257592 /怎麼辦 - 我 - 刪除 - 文件 - 說的老模式 - 100755-新模式-100644-從-不分級-CHA – 2014-07-09 14:49:01
[git reset --hard hash和git checkout hash是否有區別?](http://stackoverflow.com/questions/2541545/is-there-a-difference-between -git-reset-hard-hash-and-git-checkout-hash) – Casebash 2011-11-16 05:50:25