nop*_*ole 10 version-control mercurial dvcs backout
如果我有一个很好的修改版本:3200.然后我想测试一些东西,因为它有10行更改,我需要删除几行,即使我仍在测试我先提交,并在一些更改后,再次提交,让我们说,我做了6次提交.
现在我想把它暂停,但我不想丢失所有的测试和代码,所以我想
$ hg up -r 3200
Run Code Online (Sandbox Code Playgroud)
这是我想要的良好,稳定的修订版,现在我可以提交并推送作为提示吗?(如果可能的话,我想避免退出,hg backout
因为它看起来很糟糕,而且我不想回滚,因为回滚有副作用"如果有人在这段时间内从我身边撤离,变更可以以某种方式回到回购中")
Mar*_*ler 12
保持不变可以在Mercurial中以多种方式完成.最简单的方法就是不要把它推到任何地方.回到历史之后
$ hg update 3200
Run Code Online (Sandbox Code Playgroud)
您可以使用
$ hg push -r .
Run Code Online (Sandbox Code Playgroud)
仅推送到版本3200.这.
很重要 - 它意味着工作副本父版本,在这种情况下是3200.修订版3200不会是本地存储库中的"提示",因为您仍然有修订3201-3206,并且最高编号修订始终是我们所说的"提示".换句话说,历史看起来像这样:
[3199] -- [3200] -- [3201] ... [3205] -- [3206]
^ ^
"." "tip"
Run Code Online (Sandbox Code Playgroud)
我在哪里标记了当前的工作副本父修订版和最新修订版.
当您基于修订版3200开始工作时,图形将变为
[3199] -- [3200] -- [3201] ... [3205] -- [3206]
\
\-------------------------------- [3207]
^
".", "tip"
Run Code Online (Sandbox Code Playgroud)
请尽量不要过分强调"提示".它一直在变化,通常不是很有趣.如果跳回到3206并进行提交,则tip将表示存储库中新创建的修订版3208.在另一个仓库,提示可以是别的东西,这取决于从你拉,当它被拉扯.
如果您经常需要这样做hg push -r .
,那么我建议您为它创建一个别名.这样的别名将是一个更温和的推动,因此可以被称为"轻推":
[alias]
nudge = push -r .
Run Code Online (Sandbox Code Playgroud)
在您的工具箱中,您可以随时使用
$ hg nudge
Run Code Online (Sandbox Code Playgroud)
将您刚刚创建的变更集发送到服务器,而不必担心发送您可能已暂停的任何其他分支.
最后,记住你可以使用
$ hg update 3206
$ hg commit --close-branch -m "Abandoning this line of development"
Run Code Online (Sandbox Code Playgroud)
将3206变更集标记为"已关闭".这意味着它不会出现,hg heads
并且在运行时不会考虑合并hg merge
.如果你将它推送到服务器,你将需要使用hg push --force
,但是没关系,因为你没有创建多个打开的头,你只需添加另一个封闭的头.
多个开放头的问题实际上是一个新的hg clone
可能会更新到其中一个,这将是混乱 - 人们不知道从哪里开始工作.使用Mercurial的最新版本,hg clone
不会更新到封闭的头部,因此您可以避免此问题.
您可以通过简单地根据它提交子提交来重新打开一个封闭的头.这意味着您可以暂时关闭一条开发线而不会产生任何不良影响,除了图表中的说明表示分支在某个时刻关闭.
从问题和附带的评论来看,听起来您希望所有新的更改都基于 3200,而将之前基于 3200 的工作作为一个单独的分支。这很容易做到:
hg up 3200
# work work
hg ci -m "new work based on 3200"
Run Code Online (Sandbox Code Playgroud)
但据我所知,没有任何方法可以将 3200 标记为小费。一旦您提交了基于 3200 的内容,新的变更集将成为提示,因此您可以进行一些良性更改并提交它以创建新的提示,但这有点混乱。如果您担心其他协作者不知道使用 3200 作为他们工作的基础,因为 Mercurial 不会将其标记为提示,则另一种选择是给它一个标签并告诉团队成员确保并更新他们的工作副本在开始工作之前添加到该标签。