Mercurial:使一个分支与另一个分支相同

5
我正在与一位相对新手的开发者合作。为了让我能够对她的工作进行代码审查,我要求她创建一个分支,我可以在该分支上进行审查,并定期合并如果我对更改满意的话。
由于该分支已经出现问题,因此我想要“重置”它,使其与主线完全相同,这样她就可以从干净的代码开始重新开始。
我可以创建一个新分支,但我想保留相同的名称并避免创建不必要的副本。
那么如何使分支B与分支A完全相同?
2个回答

5

简单好奇:那个分支是怎么被“hosed”的?

你可以关闭当前的代码审查分支,然后使用--force选项重新启动一个同名分支。

hg com --close-branch -m "closing"
hg branch "same_name" --force

"hosed" = 她合并后出现了一些构建问题,因此没有回滚就还原了,然后提交了,后来又合并了一次并提交了。因此一半的更改是正确的,一半被还原了。我不想解开它。 - Jordan Crittenden
啊,我们有不止一个分支以同样的方式被破坏了。 - moswald

1
假设您有参考分支A和修改后的分支B,其中包含您想要撤销的更改:
# checkout to the head of the modified branch
hg update B --clean

# create a reverse diff between A and B and apply it to B
hg diff -r A --reverse | hg import - --no-commit

# commit changes
hg commit -m "make `hg id -r B` identical to `hg id -r A`"

你最终会得到与分支A完全相同的分支B(使用hg diff -r A来确保)。
如果想要额外加分,可以尝试创建一个合并提交,明确标记分支在历史记录中的相似性(修改提交的父级?)。
生成反向diff的基础是: Mercurial能做反向补丁吗?

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接