8

场景:在您最后一次提交之后,您决定对代码库进行一些广泛的重构。一段时间后,您意识到它花费的时间比预期的要长,您真的宁愿将重构推迟一次,并处理更紧迫的任务。但是您不想丢失迄今为止所做的所有重构工作。

那么,有没有办法“归档”或“分支”工作副本(本质上,将它放在一边,但将其保存在存储库中以供以后访问),然后恢复到最后一个好的提交并从那里恢复,而不用担心创建多个头还是将两者混淆?

4

5 回答 5

18

不要担心“两个头的恐惧”。两头是很正常的状态。它被称为匿名分支,这是人们在 Mercurial 中创建临时分支的方式之一。

只需提交,然后更新到tip-1,您就可以开始了:

hg commit -m "working on XXX"
hg update -r "tip-1"

你走了。如果你想在那个头上放一个书签(不如标签永久),你可以,但不必担心。

你总是可以推一个头而不用推另一个头hg push -r HEAD,甚至可以在哪里hg push -r .

不要害怕头脑——它们是基于 DAG 的 VCS 强大的原因。

于 2011-05-28T03:20:57.847 回答
1

您可以使用 mq、attic 或 shelve 扩展来做到这一点。

于 2011-05-27T23:00:42.680 回答
1
  1. 为重构修订分配标签
  2. 提交标签
  3. 再次克隆存储库
  4. 恢复到稳定版本
  5. 从稳定版本开始工作
  6. 不用担心多头,以后可以轻松合并

由于 mercurial 使用硬链接,因此您可以将两个存储库都保留在本地计算机上,并且使用最少的空间。命令:

$hg tag 重构
$cd ..
$hg clone 重构稳定
$cd 稳定
$hg revert -r REVISION_NUMBER

额外帮助:
http ://hgbook.red-bean.com/
http://kiln.stackexchange.com/

于 2011-05-27T23:28:57.093 回答
1

你可以用简单的方法做到这一点:

$ hg diff -g > tmp
$ hg revert --all

您的更改现在将存储在tmp. 您可以使用

$ hg patch --no-commit tmp

你会回到原来的地方。有像搁置这样的扩展可以为您自动执行上述操作。

于 2011-12-14T10:39:52.843 回答
0

在 git 中,你会做一个“藏匿”。根据This hg 有“搁置”,但它需要扩展。

于 2011-05-27T23:01:48.467 回答