簡體   English   中英

Tortoise SVN 合並兩個分支

[英]Tortoise SVN merge two branches

我正在嘗試將兩個分支與烏龜 SVN 合並。 兩個分支自從分開后都發生了變化。 如果我合並它們,則只有其中一個的更改會獲得,而另一個的更改將被覆蓋。 但我想要每個文件的最新更改(我們沒有在同一個文件中工作)。

我嘗試了“合並兩個不同的樹”選項,並在“From:”和“To:”中輸入了兩個分支。 我對兩者都進行了頭部修訂。 我將其他所有內容保留為默認值(合並深度:工作副本,比較空格,其他所有內容均未選中)

From URL選項中,您應該指定要合並到的分支。

例如,假設有 2 個分支,分支A和分支B ,並且您想將分支B合並到分支A

  • 在 TortoiseSVN 中,單擊Merge選項,然后選擇Merge two different trees選項。
  • From URL ,請提及分支ATo URL ,在To URL ,請提及分支B URL。

這應該將分支B合並到分支A而不會丟失任何文件。

參考:在此處找到此聲明

在 Subversion 中的合並總是在本地完成。 您要合並到的分支應該使用干凈的檢出方式檢出。 也就是說,它應該是最新的,沒有本地更改。 然后將另一個分支合並到其中並提交更改。

合並不是特定分支的副本。 合並通常是一種三向操作。 您有要合並到的分支(稱為yours )、要合並的分支(稱為theirs )和最后一個共同祖先(LCA)。 最后一點很重要。

如果您的分支發生更改,則在合並過程中不會觸及它。 合並算法知道這一點,因為您的算法和 LCA 之間存在差異。 如果 LCA 和他們的 LCA 之間存在差異,則考慮進行更改。

如果我明白你有:

  • branch1取自主干。
  • branch2取自branch1

你想合並什么? 是否要將branch1branch2合並到主干中。 如果您通過 Subversiontrunk復制branch1通過 Subversionbranch1復制branch2這應該是可能的。 這樣,Subversion 就知道這兩個分支在它們的歷史上是相關的。

如果您創建了分支,使用 Windows 復制文件並添加了文件,則兩個分支之間沒有歷史記錄,合並會更加困難。

可以將branch2的更改合並到branch1嗎? 如果是這樣,我會做這樣的事情:

  • 結帳branch2
  • 合並branch1branch2並提交這些更改。 branch2將在所有的變化branch1
  • 結賬trunk
  • branch2合並到trunk Trunk 現在將在branch1branch2進行所有更改。

當您嘗試使一個分支看起來與另一個分支完全相同時,“合並兩個不同的樹”選項很有用。

相反,如果您希望輸出分支包含來自兩個分支的更改,則應使用“合並修訂范圍”選項。

使用合並一系列修訂選項的步驟:

注意: output branch是指您要將更改合並到的分支。 input branch指的是你想在輸出分支中合並其更改的分支

  1. 獲取output branch的干凈工作副本
  2. 打開 TortoiseSVN 合並向導(TortoiseSVN > Merge),然后選擇“Merge a range of revisions”選項
  3. 在要合並的 URL 字段中,輸入input branch
  4. 在要合並的修訂范圍字段中,如果要合並input branch的所有修訂,請選擇“所有修訂”。 如果您只想合並特定修訂,請選擇“特定范圍”並使用“顯示日志”按鈕選擇修訂。 TortoiseSVN在這方面很聰明,任何已經合並的修訂都會變灰並標有已經合並的圖標
  5. 在下一個屏幕上選擇合並選項。 默認選項已經足夠好了
  6. 使用合並按鈕執行合並。 將彈出沖突(如果有),要求您選擇一個解決方案
  7. 解決所有沖突后,將更改提交到output branch

圖 4.56。合並向導 - 選擇修訂范圍

有關更多詳細信息,請參閱TortoiseSVN Docs on Merging

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM