linux上SVN解決檔案衝突的辦法(例項)

2021-06-20 01:40:02 字數 1561 閱讀 1888

**:

這裡,先說說衝突解決。

怎麼會發生衝突呢?

兩個人修改了不同檔案?不會有衝突,他們不相關。

兩個人同時修改了同乙個檔案的不同位置?不會有衝突,svn很聰明。

兩個人同時修改了同乙個檔案的相同位置?bing!衝突來了。

工程師a修改了a.txt的第一行,提交了。

工程師b也修改了a.txt的第一行,然後執行svn up,這時svn提示了:(以下,你開始扮演工程師b的角色了)

$ svn up

在 「a.txt」 中發現衝突。

選擇: (p) 推遲,(df) 顯示全部差異,(e) 編輯,

(mc) 我的版本, (tc) 他人的版本,

(s) 顯示全部選項:

我一般選擇p(推遲),即引入衝突到本地,不過不會影響到svn

伺服器端,可以放心。

ok,開始解決衝突了。

這時,會生成幾個檔案:

a.txt 

a.txt.mine 

a.txt.r6328 

a.txt.r6336

其中a.txt中包含了工程師a、b的所有修改,以<<<<<<<、*****==、>>>>>>>分隔。

a.txt.mine是工程師b的修改,也就是未update前的a.txt。

a.txt.r6328 是工程師a提交前的版本,即未導致衝突的版本。

a.txt.r6336是工程師a提交後的版本,即導致衝突的版本。

一般,檢視a.txt就可以看到衝突的詳情了:

[yicheng@chengyi svntest]$ cat a.txt

<<<<<<< .mine

i also modify ,agndagnagasdg;

*****==

i modify this line;

>>>>>>> .r6336

以上,<<<<<<<.mine和*****==之間是工程師b(當前的「你」)修改的內容,*****==與》.r6336之間是工程師a修改的內容。這時,最好的辦法是,叫上工程師a,你們一起確定這些修改是否都需要,是否相互相容,然後留下需要的部分,刪除<<<<<<<.mine、*****==和》 .r6336。

然後,測試,測試!確定沒問題之後,就可以告訴svn,你解決衝突了:

svn resolve –accept working a.txt (該命令會刪除a.txt.mine 

a.txt.r6328 

a.txt.r6336)

svn ci -m 』some comment』 a.txt

這裡需要注意的是,a.txt.mine 

a.txt.r6328 

a.txt.r6336這幾個檔案的存在代表著有衝突產生。如果不解決衝突,就手工刪除它們,svn伺服器也會很傻的認為你解決了衝突,允許你繼續之後的工作。但是,衝突依舊存在,你的a.txt中不但有別人的修改,還有那些討厭的<=>符號。

在衝突未解決前,試圖提交**是肯定會失敗的:

$ svn ci -m 」

svn: 提交失敗(細節如下):

svn: 提交終止: 「/path/to/svntest/a.txt」 處於衝突狀態

linux上SVN解決衝突的辦法

工程師a修改了a.txt的第一行,提交了。工程師b也修改了a.txt的第一行,然後執行svn up,這時svn提示了 以下,你開始扮演工程師b的角色了 svn up 在 a.txt 中發現衝突。選擇 p 推遲,df 顯示全部差異,e 編輯,mc 我的版本,tc 他人的版本,s 顯示全部選項 我一般選...

svn衝突解決

by lone on june 21,2011 1 如何產生衝突 當開發人員a和開發人員b從版本庫同時檢出文件1.txt,而a和b同時修改了1.txt的同一地方,後提交的一方會在拷貝副本中產生衝突。兩個工作拷貝,a拷貝中檔案1.txt內容為 dfqerq 123dfwre b拷貝中檔案1.txt內容...

svn解決衝突

2個使用者修改了同乙個原始檔,a使用者先提交 然後b使用者提交 這個時候就出現衝突了。出現衝突之後,b使用者這邊出現了4個檔案 1個是原始檔本身 3個附加的原始檔 1.原始檔本身的意思是指,該檔案在解決衝突之後可以被提交。這個檔案裡面包含了本地的檔案,加上自己修改的 加上別人修改的 除此之外,還有小...