2011-07-05 30 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