2011-11-15 45 views
142

如果我要扔掉我所有的變化,並返回到位於庫中的代碼,我做了以下內容:svn是否有`revert-all`命令?

$ rm -fr * 
$ svn up 

這是很容易的,但我不知道是否有單一的命令,將做到這一點,是這樣的:

$ svn revert-all 
+0

誰使用-fr代替-rf的?有一個原因,它是明顯rimraf,不rimfer。 –

+0

@JimmyHoffa是什麼原因? –

+1

大會的威爾遜!公約,先生!沒有我們的紀律和文化傳統,我們只是野蠻人!我說,美好的一天先生! –

回答

275

你可以這樣做:

svn revert -R . 

這不會刪除任何不受版本控制的新文件。但是你可以很容易地編寫一個shell腳本做到這一點,如:

for file in `svn status|grep "^ *?"|sed -e 's/^ *? *//'`; do rm $file ; done 
+1

歡迎來到SO,謝謝你的詳細解答,因爲'svn revert -R'與我給出的兩個命令不同。 –

+1

要刪除Windows命令行中不受版本控制的所有文件,答案在這裏:http://stackoverflow.com/a/1502365/1385429 –

+0

用戶[mashzo](http://stackoverflow.com/users/3745505/ mashzo)指出(在一個現在被刪除的答案中)''-R'標誌可能是必要的,以確保未版本化的目錄也被刪除,作爲拋棄所有*更改的一部分。考慮將其納入您的答案,如果這似乎適合你。 –

23

有一個命令

svn revert -R . 


可以使用--depth =無窮大,這是因爲上述相同的實際:

svn revert --depth=infinity 

svn revert本身是非常危險的,因爲它的全部目的是要扔掉的數據,即,您提交的更改。一旦你恢復,Subversion提供沒有辦​​法找回那些未提交更改

+6

'-R'等同於'--depth = infinity' –

+4

您的cmd「 svn revert -R「缺少語法中的當前目錄..它應該是」svn revert -R「。 – boddhisattva

+0

是編輯我的答案相應。 :-) –

17

使用遞歸開關--recursive(-R)

svn revert -R . 
0

要恢復被修改的文件:

sudo svn revert 
svn status|grep "^ *M" | sed -e 's/^ *M *//' 
+0

我想我的格式更改代表你想要的。如果你不喜歡就回滾。謝謝,記住SVN的糟糕的舊時代是好事... :) –