SVN 解決衝突

  • 總結: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

若是你獲得衝突,通過檢查你決定取消本身的修改而且從新編輯,你能夠恢復你的修改:

$ svn revert sandwich.txt
Reverted 'sandwich.txt'
$ ls sandwich.*
sandwich.txt

注意,當你恢復一個衝突的文件時,不須要再運行svn resolved

提交你的修改

如何下降衝突解決的複雜度:

  一、當文檔編輯完成後,儘快提交,頻繁的提交/更新能夠下降在衝突發生的機率,以及發生時解決衝突的複雜度。

  二、在提交時,寫上明確的message,方便之後查找用戶更新的緣由,畢竟隨着時間的推移,對當初更新的緣由有可能會遺忘

  三、養成良好的使用習慣,使用SVN時每次都是先提交,後更新。天天早上打開後,首先要從版本庫獲取最新版本。天天下班前必須將已經編輯過的文檔都提交到版本庫。

相關文章
相關標籤/搜索