HG rebase使用书签名称

Pay*_*ian 0 git mercurial

在git中我们可以运行如下命令:

git checkout master
git pull
git checkout mybranch
git rebase master
Run Code Online (Sandbox Code Playgroud)

将进行提交mybranch并将其重新绑定到更新的主服务器上.即:线性化master和的提交mybranch.我知道mercurial有一个rebase扩展名,但似乎它根据修订号而不是书签名称进行基础改变.有没有办法让它与书签名称一起使用?

Rei*_*nds 5

该hg rebase命令不仅接受修订号,还接受书签,标签,分支名称,revsets; 基本上,任何可用于引用修订的东西(就像任何带REV参数的命令一样).我能想到的没有Mercurial命令仅限于修订号(请参阅hg help revisions和hg help revsets).

也就是说,虽然你可以完全以类似Git的方式操作Mercurial(如果这是你最熟悉的,你应该坚持使用它),请注意线性化历史是Git的特点,因为Git的历史很大程度上是匿名的.具有命名分支(例如Mercurial或Fossil)或具有分层日志(例如Bazaar)的版本控制系统实际上不需要线性化历史.

当然,Rebase对于其他目的仍然有用,或者如果您更喜欢使用书签而不是命名分支.