2015-02-06 74 views
-3

如果我們從版本庫版本「1」開始,並且人員A,B,C,D和E提交代碼更改(版本6是E提交後的最新版本),我們正在使用SVN進行版本控制系統。假設程序員C的變更必須退出,但我們希望保留來自人員A,B,D,E的變更。我們如何做到這一點?我們使用SVN進行版本控制系統,如何忽略某些中間版本並使用svn接受其他版本?

希望它在一定程度上解釋。

百萬在此先感謝 MB昌

回答

1

你需要反向合併

如果您使用TortoiseSVN客戶端,很容易(http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-merge.html):

如果要合併更改背出你的工作副本,恢復 這已經犯了變化,選擇修訂 還原並確保選中反向合併框。

如果使用命令行,這是一個比較複雜一點(http://svnbook.red-bean.com/en/1.7/svn.branchmerge.basicmerging.html):

爲SVN合併一個非常常見的用途是回滾一個變化是 已經提交。假設你在/ calc/trunk的 工作副本上愉快地工作,並且發現在修訂303中改變了方式 ,修改後的integer.c完全是錯誤的。它從來不應該犯下。您可以使用svn merge來撤消工作副本中的 更改,然後將存儲庫的本地修​​改提交到 。所有你需要做的是指定一個反向差異。 (您可以通過指定--revision 303這樣做:由具有同等 --change -303 302,或)

$ svn merge -c -303 ^/calc/trunk 
--- Reverse-merging r303 into 'integer.c': 
U integer.c 
--- Recording mergeinfo for reverse merge of r303 into 'integer.c': 
U A-branch 

$ svn status 
M  . 
M  integer.c 

$ svn diff 
… 
# verify that the change is removed 
… 

$ svn commit -m "Undoing change committed in r303." 
Sending  integer.c 
Transmitting file data . 
Committed revision 350. 

當我們談論「刪除」的變化,我們」真的在談論 從HEAD版本中刪除它。原始更改仍在存儲庫歷史記錄中存在 。

+0

謝謝,它服務我的目的 – user2450573 2015-02-06 14:02:44

+0

@ user2450573:在這種情況下,請將此答案標記爲正確的答案,將有助於其他用戶找到相關的答案。 – 2015-02-06 14:13:03