0

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

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

4

2 回答 2

0

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

在旧分支目录中,执行:

bzr unshelve --keep ID

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

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

回到旧分支,执行以下操作:

bzr revert

让它回到原来的状态。

unshelve 操作将更改放在旧分支的工作目录中,merge 将它们转移到新分支的工作目录中,shelve 操作执行其通常的工作,revert 将旧分支重置为其原始状态。

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

于 2013-11-07T02:39:46.040 回答
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

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

于 2013-11-08T08:03:48.433 回答