如果您先“ hg clone”一个较早的提交,然后再提交,您将创建一个新的分支吗?

时间:2018-11-01 21:24:36

标签: mercurial

我知道,当您更新到以前的修订版时,您将在下次提交时创建一个新分支。克隆早期版本时会发生什么?您的下一次提交(或推送)会创建一个新分支吗?

我问的原因是因为我们的提示当前已损坏,所以在解决该问题之前,我打算执行以下操作:

hg clone -r <prev_rev> <Tip>
# make changes
hg commit -m "my changes" -u me
# wait for Tip to get fixed
hg pull 
hg merge
hg push

这项工作有效吗?还是最终会导致创建新分支或悬挂头?我想避免做任何一件事情。

1 个答案:

答案 0 :(得分:0)

是的,至少在存储库历史记录中具有“ fork”的意义上,这将创建分支。

不会为分支分配新的分支名称,但是就了解存储库中的历史记录而言,该名称本身通常并不重要。

如果您的原始存储库是:

A-B-C-D

然后您进行hg clone -r C...和新的提交,最终将得到:

A-B-C-(D)
     \
      E

现在,由于您最多只能克隆C,所以该特定本地存储库可能尚未包括D。但是,当您最终将其与另一个同步时,将不得不处理它。如果您拉,则您将在该克隆中获得D。如果您尝试推动HG,它将警告您创建一个新的远程头,通常的方法是将其合并。

这种方法没有错。如果您暂时需要解决一些小问题,这是一种合理的解决方法。但是您实际上并不需要新的克隆,您可以hg update C并从那里开始工作,这可能会更容易。