我有一个有几个货架的分店,这个分支现在已经没有开发了,因为我们从中分支了一个新分支。现在我需要接管我搁置的更改而不将旧分支修改为新分支。什么是最简单的方法?
我知道我可以取消搁置,手动接管更改并恢复旧分支,但这很乏味。有更好的解决方案吗?
答案 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 --preview
和patch
命令:
bzr unshelve --preview -d /path/to/oldbranch | patch -d /path/to/targetbranch
但我真的推荐第一个选项。