我只想提交我对我的文件所做的一些修改,我首选的方法是搁置/隐藏我不想提交的更改。这允许我在实际提交之前测试我将提交的更改。
我遇到的问题是,当我在 tortoisehg 中使用“搁置”工具时,我找不到任何方法将一个块分成两个更小的块。例如,我有一个看起来像这样的块:
@@ -1,1 +1,2 @@
-hallo world
+hello world
+something else
我想搁置“别的东西”,这样我就可以只提交“hallo->hello”修复。但是,由于 tortoisehg 将其视为单个块,因此我可以搁置这两个更改,也可以不搁置任何更改。
我还尝试通过命令行使用搁置扩展,但根据我从文档中的理解,它不提供仅搁置部分文件的功能。
最佳答案
您可以从命令行完成您的目标。 hg commit
有互动版本, hg revert
, 和 hg shelve
,如果需要,他们有低级选项可以一起破解补丁;您可以通过 -i
使用它们(或 --interactive
)命令行选项。
这意味着您可以使用 hg commit -i
建立一个提交。和 hg commit --amend -i
.如果你安装了进化扩展,你可以使用 hg uncommit
再次从提交中提取更改;如果没有,您可以使用 hg revert -r .~1
或 hg revert -i -r .~1
一个文件并使用 hg commit --amend -i
再次修复它。
为了从补丁中选择单独的行,您有两个选择。您可以使用 e
编辑补丁(但请参阅下面的更方便的选项)。
然后您可以使用 hg shelve
搁置剩余的更改。
原则上您也可以使用 hg shelve -i
来做到这一点。但是,有一个很大的警告;如果您编辑 hg shelve -i
的补丁,那么 Mercurial 的 merge 机制会变得困惑,并且不会干净地处理更改,而是将您转储到 merge 工具中以解决这个明显的冲突(这意味着需要大量额外的工作来解决它)。因此我强烈推荐使用 hg commit -i
和 hg commit --amend -i
如果您想在行级别操作(hg shelve -i
如果您不编辑补丁可以正常工作)。
为了更加方便(防止您编辑补丁),您还可以通过将以下内容添加到您的 hgrc
来启用实验记录选项。文件:
[experimental]
crecord = true
这将为
hg commit -i
启用基于终端的大块编辑器, hg revert -i
, 和 hg shelve -i
它允许您选择单独的线条和大块(在内部,其工作方式与编辑补丁大致相同)。使用 ?
在该编辑器中获得帮助的关键;使用 f
展开/折叠单个大块,空格键选择大块/线条。请注意,此工具的基于行的选择与
hg shelve -i
一起使用带有与编辑补丁相同的警告;即使用 hg commit -i
和 hg commit --amend -i
相反,如果您想进行基于行的选择。此外,基于行的选择 hg revert -i
仍然会还原整个大块头。 (此选项仍被标记为实验性是有原因的。)
关于mercurial - 是否有等效于 `git stash save -p` 的 hg 可以将 block 分成更小的 block ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33595826/