對于svn revert命令,前面我們分別通過“回滾文件內(nèi)容”,“回滾屬性”,“回滾操作”來給出直觀的認(rèn)識(shí)。現(xiàn)在我們再通過一個(gè)稍微復(fù)雜的例子來進(jìn)一步了解svn revet命令。
假設(shè)現(xiàn)在我們的目錄環(huán)境如下:






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






















可以發(fā)現(xiàn),即便我們執(zhí)行了svn update操作,本地已經(jīng)修改的文件仍然不會(huì)被回滾到和版本庫一樣的版本。這是因?yàn)椋?br />
因?yàn)镾VN為了保護(hù)用戶不小心update操作而覆蓋自己本地的修改,不會(huì)對已經(jīng)被修改但尚未提交的資源進(jìn)行update操作。像這種情況下只能用svn revert而不能用svn update。
【15】svn del與svn revert
好了,那么假如現(xiàn)在我們在修改后臨提交之前發(fā)覺這個(gè)read-from-wc.txt是不需要的,我們要?jiǎng)h除而不是回滾它了。該怎么做?看看下面的實(shí)驗(yàn):









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








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