我经常发现自己需要在我正在进行的工作之前切换到不同的工作。我想知道在Mercurial中是否有一种方法可以保存/提交我未完成的更改,这对其他人来说是不可用的(即不可克隆/可推送/可拉动)。
答案 0 :(得分:4)
Mercurial phases
可能就是答案。
从Mercurial v2.1开始,您可以将mq
个变更集配置为自动标记为secret
。传入/拉出和传出/推送命令忽略secret
个变更集。
要启用此行为,您需要将以下内容添加到配置中:
[mq]
secret = True
启用后,其行为如下:
$ hg qpush --all
applying my-patch
now at: my-patch
$ hg phase -r .
16873: secret
$ hg outgoing
comparing with https://www.mercurial-scm.org/repo/hg
searching for changes
no changes found (ignored 1 secret changesets)
答案 1 :(得分:2)
看看Shelve Extension。这为您提供了基础知识,可能足以满足您的需求。
还有Mercurial Queues Extension,但我发现这可能有点奇怪。
作为最后的替代方案,您可以随时将更改提交到另一个分支,以便它们不会影响主线开发,但我认为这些可能仍然可见。
答案 2 :(得分:1)
您可以将您的仓库克隆到新地点以处理新的更改。这样,您的挂起更改将保留在本地计算机上,而不会被推送。当然,这取决于您的回购的大小。如果它太大,克隆就会变得有点过分。
正如其他人所建议的那样,您可以将不可用的更改标记为在专用分支上。推送时,可以使用-b
参数推送显式分支。因此,如果您的私人分支是TimPrivateBranch
,其他更改都在default
上:
hg push -b default
TimPrivateBranch
保留在您的本地计算机上。当然,这需要你每次推动都记住-b
参数。
完成私有分支后,只需合并回默认值:
hg up default
hg merge TimPrivateBranch