2011-07-05 62 views
2

我與同一個項目的兩個分支一起工作。他們兩個都是我幾個月前創造的。我是這個項目的唯一開發者。經過長時間的忽視後,我回到了這個項目。 (我記得在2年前我腦中所記得的)的原意是擁有一個單獨的(共享的)存儲庫而不需要工作樹,並且具有主幹分支以及幾個實驗的分支(如需要)。我結束了兩個分支 - 第一個是「生產分支」,第二個是爲了測試實驗功能而創建的。 以下是bzr info兩個分支內部發出的輸出:如何正確合併兩個bzr分支?

分公司1

C:\My\Proj\path\qwerty>bzr info 
Lightweight checkout (format: 2a) 
Location: 
    light checkout root: . 
    checkout of branch: C:/My/Proj/path/qwertyBazaarRepo/trunk 
    shared repository: C:/My/Proj/path/qwertyBazaarRepo 

Related branches: 
    parent branch: . 
    submit branch: C:/My/Proj/path/ExperimentalQwerty 

C:\My\Proj\path\qwerty> 

分公司2

C:\My\Proj\path\ExperimentalQwerty>bzr info 
Standalone tree (format: 2a) 
Location: 
    branch root: . 

Related branches: 
    parent branch: C:/My/Proj/path/qwertyBazaarRepo/trunk 
    submit branch: C:/My/Proj/path/qwertyBazaarRepo/trunk 

我想合併這兩個分支的幾個文件(讓他們在所有這兩個和任何後續分支中變得相同)。這樣做的最好方法是什麼?

P.S.對於視覺檢查的變化/合併我想使用kdiff3

回答

3

其實您的第一個位置是分支C:/My/Proj/path/qwertyBazaarRepo/trunk的輕量級結帳,它確實使用共享存儲庫。第二個位置是獨立分支。

要比較2個分支的歷史記錄,請使用bzr missing path/to/other/branch命令或bzr qlog path/to/branch1 path/to/branch2

如果你不希望合併的歷史,但只更改,那麼您可以使用kdiff3直接在兩棵樹和手動合併更改,或者使用bzr merge path/to/file命令合併單個文件,從主幹分支運行merge(第1位置)。

從多個文件合併更改,可以不用每次合併後提交運行bzr merge FILE幾次,但對於所有後續合併必須使用--force命令行選項,即bzr merge --force FILE

此外,您可以在合併後使用bzr shelve刪除您不想出現的更改。

+0

謝謝。這真的很有幫助。 –

+0

一個簡短的問題,如果我可以。將實驗分支合併到樹幹後,如何將實驗分支與樹幹同步?通過簡單的重新分支?或者,還有更好的方法? –

+1

@bgbg:如果您願意,您可以將樹幹合併回實驗。通常當實驗分支結束它的生命時,我只是將它合併到主幹(如果需要的話),然後刪除它(或將它移動到特殊的limbo目錄,我稱之爲_MERGED /,我不時從_MERGED刪除分支)。 – bialix