1. 程式人生 > >SVN衝突的原因和解決

SVN衝突的原因和解決

1.svn衝突產生的原因: 兩個人對專案的同一個檔案,同一處地方都做了修改; 但是,他提交在我之前,這樣我的就會和他的發生衝突了 如果別人和自 己更改的是同一個檔案,那麼update時會自動進行合併, 如果修改的是同一行,那麼合併時會產生衝突! 舉個情景例子就是這樣: 有兩個開發人員,大富和小貴,分別從伺服器端下載了檔案A。

大富修改之後,A變成了A’,小貴修改之後,A變成了A”。

大富先一步提交,使伺服器端檔案的版本也變成了A’

小貴本地的檔案A”已經過時了,此時她已無法提交檔案,伺服器會要求她先進行一次更新操作。

此時小貴的更新操作有兩種可能:

(1)小貴所做的修改與大富不是同一個位置,更新操作會先合併檔案然後成功。

(2)小貴所做的修改與大富恰好是同一個位置,更新操作先嚐試合併檔案然後失敗,發生衝突。

注: 如果這個檔案發生了svn衝突,該檔案會被用雙紅標示,同時該檔案還會註釋並顯示修改者的姓名資訊; 如果衝突了,同一檔案會出現四個字尾不同的相同檔案:一般第二個.mine檔案是我修改的檔案; 第三個檔案是svn伺服器上的原版檔案,第四個檔案是別人修改的檔案;

2.svn衝突的解決

  解決:我覺得我修改的好,以我修改的為準,廢掉別人的   操作:右鍵衝突檔案,選擇markresolved,會彈出一個選擇彈出框,選擇第二個resolve conflict by using my version of file

  解決:不用我的,以同事的為準   操作:同上,只不過選擇第三個:resolve conflict by using the incoming of the file

  解決:所有的修改都要撤銷掉,回到檔案原來沒有別修改過的樣子   操作:同上,只不過選擇第四個:resolve conflict by using base version of the file

  解決:把同事改動的和我改動的合併到一起   操作:右鍵衝突檔案-edit conflicts-對照和複製貼上-最後右鍵衝突檔案-mark resolved-conflicts has been resolved in the file

3.svn衝突一定是發生在更新之後,但更新的背景不同;多數的情況是,我做了一些修改,   然後去提交,發現報錯了,SVN提交has encountered a problem   這時候就說明,衝突了;   這時候選中無法提交的檔案,點選更新,就會多出三個檔案:   .mine:我修改過的檔案備份   .r(xxx):基礎版本檔案   .r(xxx+1):svn最新版本的內容(就是別人修改過的)