如何在Git中對一個或多個文件執行相當於TFS的撤銷掛起更改?如何執行TFS等效的'撤消掛起更改'
,基本意思是做下列步驟操作:
- 撤消磁盤上的變化
- 重置任何改變的Git已經發現
- 獲取該文件的最新變化,從Git的
它如果你有(1)只是在磁盤上改變它,而不添加它,將很好地知道命令中的差異(如果有的話),但是當你已經做了(2)完成了附加命令和獎金(3)即使你已經提交了更改。
如何在Git中對一個或多個文件執行相當於TFS的撤銷掛起更改?如何執行TFS等效的'撤消掛起更改'
,基本意思是做下列步驟操作:
它如果你有(1)只是在磁盤上改變它,而不添加它,將很好地知道命令中的差異(如果有的話),但是當你已經做了(2)完成了附加命令和獎金(3)即使你已經提交了更改。
爲1和2,所有你需要做的是:
git stash -u #same effect as git reset --hard, but can be undone
這將扔掉任何變化。如果您使用reset
,請小心。閱讀操作復位和結賬的指數和硬,軟和混合選項的排列。該progit書中詳細解釋了這一點:http://progit.org/2011/07/11/reset.html
對於3,
git reset --hard HEAD^
,但會更好發出此之前git stash -u
- 以防萬一你有掛起更改。
這會將當前分支重置爲當前提交的父級。在網上查找「tree-ish」。參考後的^和〜N將允許您指向該參考歷史記錄中的任何可到達的點。要了解歷史記錄是如何在git中進行跟蹤的,「計算機科學家Git」解釋了有向非循環圖:http://eagain.net/articles/git-for-computer-scientists/
要從當前提交的狀態中獲取單個文件(即丟棄更改),可以使用checkout
git checkout HEAD -- <a list of files>
如果您發出錯誤上面的最後一個重置命令,您不會遇到麻煩。 Git會跟蹤分支用於指向reflog的位置。
git reflog
會列出你的歷史。您可以在輸出中看到如何引用每個,所以:
git reset --hard [email protected]{1}
將重置分支到它曾經是前1個變化。
要添加,如果你想消滅被忽略的文件和未跟蹤文件,你可以用這個擦:
git clean -xdf
這個命令將撤消本地更改,並將它們恢復到當前版本的庫:
git reset --hard
可以通過發出恢復到您的最後一個有效的提交:
git reset --hard HEAD
我F你只是想恢復只是一個文件,使用git結帳代替:
git checkout -- file_name.extension
git checkout HEAD file_name.extension
你爲什麼要區分'git reset --hard'和'git reset --hard HEAD'? – manojlds
git checkout [path]
或(整個回購),其次git reset --hard HEAD
git reset [path]
通過git checkout [path]
git reset --hard [commit]
在恢復回購的狀態[commit]
,必須是tree-ish我相當於在Git中使用Eclipse的是簡單地右鍵單擊該文件並選擇Replace with
- >HEAD Revision
(或任何您想要的版本)。
小心; git不會提示你有一個漂亮的(令人煩惱的)對話框來選擇你想撤消待處理更改的文件。 :) –
這樣做的一種方法是添加-p參數,它將提示您進行每個更改。你可以說'a'或'd'來處理整個文件,而不是'y'或'n'來處理單個的文件。 –