我知道,当您更新到以前的修订版时,您将在下次提交时创建一个新分支。克隆早期版本时会发生什么?您的下一次提交(或推送)会创建一个新分支吗?
我问的原因是因为我们的提示当前已损坏,所以在解决该问题之前,我打算执行以下操作:
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
这项工作有效吗?还是最终会导致创建新分支或悬挂头?我想避免做任何一件事情。
答案 0 :(得分:0)
是的,至少在存储库历史记录中具有“ fork”的意义上,这将创建分支。
不会为分支分配新的分支名称,但是就了解存储库中的历史记录而言,该名称本身通常并不重要。
如果您的原始存储库是:
A-B-C-D
然后您进行hg clone -r C...
和新的提交,最终将得到:
A-B-C-(D)
\
E
现在,由于您最多只能克隆C,所以该特定本地存储库可能尚未包括D。但是,当您最终将其与另一个同步时,将不得不处理它。如果您拉,则您将在该克隆中获得D。如果您尝试推动HG,它将警告您创建一个新的远程头,通常的方法是将其合并。
这种方法没有错。如果您暂时需要解决一些小问题,这是一种合理的解决方法。但是您实际上并不需要新的克隆,您可以hg update C
并从那里开始工作,这可能会更容易。