在处理新功能时,我到达的地方大致有效,但仍未达到我想要创建变更集的程度。然而,我会创建一个“还原点”或“snapsnot”,以便我可以回到我的代码库的这个大致工作版本。在TFS我会创建一个搁架集。
在mercurial中,搁置集表现不同:只要我将文件移动到一个架子中,该文件就会恢复到最后一个变更集的状态。因此,出于创建快照和继续工作的目的,此行为使得搁置不是解决方案。
How can I snapshot my work and continue with the files as they are?
我知道这里有很多关于搁置货币的问题,但我找不到这个问题的答案。
评论@Mathiasdm和@Gill Bates的有用答案
现在我使用commit --amend,也可以在TortoisHG中使用:提交按钮可以转换为修改按钮。
Ammend将更改添加到先前的提交,而不是创建新的更改集。所以
“hg shelve&& hg unshelve --keep”和mq扩展是不错的选择。
答案 0 :(得分:4)
一个特别适用于此的命令是:
hg commit --amend
它允许您创建提交并不断改进(修改它)。每次执行&#h; hg commit --amend'时,工作目录中的所有其他更改都会添加到其中。
我知道这听起来并不像“搁置”,但听起来你所需要的实际上并不是真正的搁置。
答案 1 :(得分:3)
实现目标有很多方法:
您可以使用此命令:
hg shelve && hg unshelve --keep
它将创建一个搁架,然后将其搁置到工作空间,将搁架搁置在货架存放处。
还有MQ extension可让您将提交作为补丁进行管理。您可以使用以下命令创建快照:
hg qnew my_snapshot_name
然后,您将能够刷新,取消应用,重新应用,更改顺序,转换为常规变更集并执行其他有用的操作,请查看the link以获取信息。
您只需保存补丁:
hg diff > tmp.diff
然后将其应用于:
hg import tmp.diff
或者用:
patch -p1 < tmp.diff
或者您可以在MQ中导入:
hg qimport tmp.diff
您可以调整VCS工作流程并使用所谓的“功能分支”来存储功能特定的进度,而不是用它污染主分支:
hg branch feature/my_stufff
... work work work ...
hg commit -m 'some progress'
... polish debug finalize ...
hg commit -m 'now it really works'
然后,您需要将更改传播到主分支。 如果您希望保持历史线性,则可以使用rebase extension执行此操作:
hg rebase -s feature/my_stuff -d default --collapse
它将占用整个功能分支,置于默认分支的顶部,并将功能分支的所有更改集折叠为一个变更集。当然,你可以在没有崩溃的情况下进行重组。
或者您可以将功能分支合并到默认分支:
hg update default && hg merge feature/my_stuff
这将保持非线性。