通常,在 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/