總結:html
可能會取消一些修改svn
svn revert工具
解決衝突(合併別人的修改)spa
svn updatecode
svn resolvedhtm
提交你的修改ci
svn commit文檔
若是你遇到衝突,三件事你能夠選擇:get
「手動」合併衝突文本(檢查和修改文件中的衝突標誌)。it
用某一個臨時文件覆蓋你的工做文件。
運行svn revert <filename>來放棄全部的本地修改。
一旦你解決了衝突,你須要經過命令svn resolved讓Subversion知道,這樣就會刪除三個臨時文件,Subversion就不會認爲這個文件是在衝突狀態了。
$ svn resolved sandwich.txt Resolved conflicted state of 'sandwich.txt'
第一次嘗試解決衝突讓人感受很懼怕,但通過一點訓練,它簡單的像是騎着車子下坡。
這裏一個簡單的例子,因爲不良的交流,你和同事Sally,同時編輯了sandwich.txt
。Sally提交了修改,當你準備更新你的工做拷貝,衝突發生了,咱們不得不去修改sandwich.txt
來解決這個問題。首先,看一下這個文件:
$ cat sandwich.txt Top piece of bread Mayonnaise Lettuce Tomato Provolone <<<<<<< .mine Salami Mortadella Prosciutto ======= Sauerkraut Grilled Chicken >>>>>>> .r2 Creole Mustard Bottom piece of bread
小於號、等於號和大於號串是衝突標記,並非衝突的數據,你必定要肯定這些內容在下次提交以前獲得刪除,前兩組標誌中間的內容是你在衝突區所作的修改:
<<<<<<< .mine Salami Mortadella Prosciutto =======
後兩組之間的是Sally提交的修改衝突:
======= Sauerkraut Grilled Chicken >>>>>>> .r2
一般你並不但願只是刪除衝突標誌和Sally的修改—當她收到三明治時,會很是的吃驚。因此你應該走到她的辦公室或是拿起電話告訴Sally,你沒辦法從從意大利熟食店獲得想要的泡菜。[7]一旦大家確認了提交內容後,修改文件而且刪除衝突標誌。
Top piece of bread Mayonnaise Lettuce Tomato Provolone Salami Mortadella Prosciutto Creole Mustard Bottom piece of bread
如今運行svn resolved,你已經準備好提交了:
$ svn resolved sandwich.txt $ svn commit -m "Go ahead and use my sandwich, discarding Sally's edits."
如今咱們準備好提交修改了,注意svn resolved不像咱們本章學過的其餘命令同樣須要參數,在任何你認爲解決了衝突的時候,只須要當心運行svn resolved,—一旦刪除了臨時文件,Subversion會讓你提交這文件,即便文件中還存在衝突標記。
記住,若是你修改衝突時感到混亂,你能夠參考subversion生成的三個文件—包括你未做更新的文件。你也可使用三方交互合併工具檢驗這三個文件。
若是你只是但願取消你的修改,你能夠僅僅拷貝Subversion爲你生成的文件替換你的工做拷貝:
$ svn update C sandwich.txt Updated to revision 2. $ ls sandwich.* sandwich.txt sandwich.txt.mine sandwich.txt.r2 sandwich.txt.r1 $ cp sandwich.txt.r2 sandwich.txt $ svn resolved sandwich.txt
若是你獲得衝突,通過檢查你決定取消本身的修改而且從新編輯,你能夠恢復你的修改:
$ svn revert sandwich.txt Reverted 'sandwich.txt' $ ls sandwich.* sandwich.txt
注意,當你恢復一個衝突的文件時,不須要再運行svn resolved。
如何下降衝突解決的複雜度:
一、當文檔編輯完成後,儘快提交,頻繁的提交/更新能夠下降在衝突發生的機率,以及發生時解決衝突的複雜度。
二、在提交時,寫上明確的message,方便之後查找用戶更新的緣由,畢竟隨着時間的推移,對當初更新的緣由有可能會遺忘
三、養成良好的使用習慣,使用SVN時每次都是先提交,後更新。天天早上打開後,首先要從版本庫獲取最新版本。天天下班前必須將已經編輯過的文檔都提交到版本庫。