如果我們從版本庫版本「1」開始,並且人員A,B,C,D和E提交代碼更改(版本6是E提交後的最新版本),我們正在使用SVN進行版本控制系統。假設程序員C的變更必須退出,但我們希望保留來自人員A,B,D,E的變更。我們如何做到這一點?我們使用SVN進行版本控制系統,如何忽略某些中間版本並使用svn接受其他版本?
希望它在一定程度上解釋。
百萬在此先感謝 MB昌
如果我們從版本庫版本「1」開始,並且人員A,B,C,D和E提交代碼更改(版本6是E提交後的最新版本),我們正在使用SVN進行版本控制系統。假設程序員C的變更必須退出,但我們希望保留來自人員A,B,D,E的變更。我們如何做到這一點?我們使用SVN進行版本控制系統,如何忽略某些中間版本並使用svn接受其他版本?
希望它在一定程度上解釋。
百萬在此先感謝 MB昌
你需要反向合併。
如果您使用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版本中刪除它。原始更改仍在存儲庫歷史記錄中存在 。
謝謝,它服務我的目的 – user2450573 2015-02-06 14:02:44
@ user2450573:在這種情況下,請將此答案標記爲正確的答案,將有助於其他用戶找到相關的答案。 – 2015-02-06 14:13:03