對于svn revert命令,前面我們分別通過“回滾文件內容”,“回滾屬性”,“回滾操作”來給出直觀的認識。現在我們再通過一個稍微復雜的例子來進一步了解svn revet命令。
假設現在我們的目錄環境如下:






前面我們提到對于尚未提交的本地修改,可以使用svn revet回滾。那么如果我們使用svn update來從版本庫同步到本地文件,不也是可以達到同樣的目的嗎?事實是這樣嗎?






















可以發現,即便我們執行了svn update操作,本地已經修改的文件仍然不會被回滾到和版本庫一樣的版本。這是因為:
因為SVN為了保護用戶不小心update操作而覆蓋自己本地的修改,不會對已經被修改但尚未提交的資源進行update操作。像這種情況下只能用svn revert而不能用svn update。
【15】svn del與svn revert
好了,那么假如現在我們在修改后臨提交之前發覺這個read-from-wc.txt是不需要的,我們要刪除而不是回滾它了。該怎么做?看看下面的實驗:









上面的實驗我們一共做了2個變更:
A.修改本地文件read-from-wc.txt
B.標記刪除本地文件read-from-wc.txt
和svn update不會對已修改而尚未提交的資源進行update一樣,svn del同樣不會刪除已修改但尚未提交的資源---除非你強制加上--force參數。
如果此時我們又想反悔了,那么再次執行svn revert命令會有什么后果:








好了,現在文件read-from-wc.txt又回來,但是之前我們對它進行的本地修改也跟著不見了!這是因為svn revert回滾的是所有本地未提交的操作,內容,屬性。所以在回滾刪除操作之時,也會連修改操作也一起回滾。這個教訓告訴我們:
不要把所有變更都放在最后一次性提交,提交要及時、多次。否則一旦回滾所有其他修改都會跟著撤銷。
-------------------------------------------------------------
生活就像打牌,不是要抓一手好牌,而是要盡力打好一手爛牌。