[我为mercurial标记了我的问题但是,实际上,我正在问一个适用于其他源代码控制应用程序的概念性问题。]假设你有一个文件夹,其中包含版本控制下的应用程序源代码;称之为主干。我克隆存储库并开始修改代码,处理程序的新版本,在修订后提交修订版,它永远不会成为主干的一部分。
然后有一天,在修订版23上,我发现了一个错误。
我承诺,作为修订版24.
我希望你能解决我的错误,而不是我所做的所有其他更改。将修订版24的代码(错误修复)推送或合并回主干的一般过程是什么?
答案 0 :(得分:4)
在Mercurial,你有几个选择(我确信其他DVCS也有类似的功能)
最简单的方法:一旦您意识到错误属于主干线路,您就会更新到主线提示,提交,推送,然后将该changset合并到您的边项目中。
hg up -r mainline
# make your changes
hg com -m "I fixed the bug"
hg push -r mainline ## now others can pull it!
hg up -r sideproject
hg merge mainline
hg com -m "merge mainline bugfix into sideproject"
完成。
通过使用mq扩展或导出补丁,有一些方法允许您编辑历史记录以获得类似的结果,但它们都只是在事后完成上述方法。
变更集随身携带其祖先的所有变化。所以你需要在拓扑上将主线变更(修订版24)与你的项目(转到23)分开。