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最新版本的內容(就是別人修改過的)