mercurial - hg pull --rebase中使用的rebase命令是什么

标签 mercurial rebase

通常,在 HG 中,我的工作流程是专门使用:

hg pull --rebase

如果我想在两个命令中运行它,我会怎么做?
hg pull
hg rebase <probably with some options?>

最佳答案

什么hg pull --rebase确实是首先做一个hg pull然后 hg rebase在此之上带有默认参数(您可以在函数 rebase.py 中查看 Mercurial 分发中的 pullrebase() 中的代码),但前提是引入了任何新修订。如果不需要 rebase ,hg pull --rebase将改为更新到新的分支提示。所以,hg pull && hg rebase大致正确,但不能完全捕捉一些极端情况(没有新的修订,不需要 rebase )。

默认情况下,hg rebase将使用工作目录的父目录作为 rebase 的基本修订版,并将当前分支的最新修订版(即通常是您刚刚拉入的版本)作为目标。简而言之,相当于hg rebase -b . -d 'last(branch(.))' .

在这种情况下,“基本修订”是什么意思?这意味着 Mercurial 将去寻找基本修订和目标的最不共同的祖先。然后它将重新设置所有内容,但不包括目的地顶部的最不共同的祖先。即,指定基础修订版允许您在分支 [1] 上选择几乎任何您想要 rebase 的修订版,并让 Mercurial 确定哪些修订版属于该分支。

请注意,因为 rebase 是基于当前工作目录的父级,这意味着如果您当前的结帐不是您一直在处理的,那么 hg pull --rebase实际尝试 rebase 一个不同的分支可能会让你感到惊讶(它通常会失败,因为这些修订通常是公共(public)阶段的一部分,但如果你正在使用所谓的 non-publishing repositories 和不要使用命名分支)。

[1] 在此上下文中的分支是指匿名或拓扑分支,而不是命名分支。见 hg help glossary了解更多详情。

关于mercurial - hg pull --rebase中使用的rebase命令是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35327163/

相关文章:

git - 用于备份的私有(private) mercurial/git 分支?

mercurial - 列出一名用户的 Mercurial 检

git - 查看我在 Git 和 Mercurial 中本地提交的文件

mercurial - 如何在远程存储库上运行 hg recovery 命令

git - Git如何选择重新设定基准的起点?

Git rebase 和 Vim 编辑器

git - 如何将默认命令更改为 git rebase 中的所有提交?

python - 为 Mercurial Hook 设置环境变量

git - 在 Git 中存储然后 rebase

git - 为什么我会与 git rebase -p -i 发生冲突?