bzr取消了不同的分支

时间:2013-11-06 15:55:42

标签: bazaar

我有一个有几个货架的分店,这个分支现在已经没有开发了,因为我们从中分支了一个新分支。现在我需要接管我搁置的更改而不将旧分支修改为新分支。什么是最简单的方法?

我知道我可以取消搁置,手动接管更改并恢复旧分支,但这很乏味。有更好的解决方案吗?

2 个答案:

答案 0 :(得分:0)

每个变更集需要几个步骤。

在旧分支目录中,执行:

bzr unshelve --keep ID

在新的分支目录中,执行:

bzr merge --uncommitted OLD_BRANCH_DIRECTORY
bzr shelve --all -m MESSAGE

回到旧分支,请执行:

bzr revert

让它恢复到原来的状态。

unhelve操作将更改放在旧分支的工作目录中,合并将它们传输到新分支的工作目录,搁置操作执行其通常的工作,并且恢复将旧分支重置为其原始状态

根据需要选择ID,OLD_BRANCH_DIRECTORY和MESSAGE。对每个搁置的变更集重复。

答案 1 :(得分:0)

也许最干净,最好的方法是创建旧分支的副本,将货架转换为正确的提交,然后合并它们。例如:

cd /path/to/repo
mv oldbranch work            # we will unshelve in "work"
bzr branch work oldbranch    # the replica, but without shelves
cd work
bzr unshelve
bzr commit -m 'some change'
bzr unshelve
bzr commit -m 'another change'
cd ../targetbranch
bzr merge ../work

另一种方式,但不太干净,可能是使用bzr unshelve --previewpatch命令:

bzr unshelve --preview -d /path/to/oldbranch | patch -d /path/to/targetbranch

但我真的推荐第一个选项。