Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mercurial 是否有一个hg等价物'git stash save-p'可以将块分割成更小的块?_Mercurial_Tortoisehg - Fatal编程技术网

Mercurial 是否有一个hg等价物'git stash save-p'可以将块分割成更小的块?

Mercurial 是否有一个hg等价物'git stash save-p'可以将块分割成更小的块?,mercurial,tortoisehg,Mercurial,Tortoisehg,我只想提交我对文件所做的一些修改,而我的首选方法是搁置/隐藏我不想提交的更改。这允许我在实际提交更改之前测试将提交的更改 我遇到的问题是,当我在Ortoisehg中使用“shelve”工具时,我找不到任何方法将一个块分割成两个较小的块。例如,我有一块如下所示: @@ -1,1 +1,2 @@ -hallo world +hello world +something else 我想搁置“其他东西”,这样我就可以提交“你好->你好”修复。然而,由于陆龟看到这是一个单一的块,我可以搁置这两个或没有任

我只想提交我对文件所做的一些修改,而我的首选方法是搁置/隐藏我不想提交的更改。这允许我在实际提交更改之前测试将提交的更改

我遇到的问题是,当我在Ortoisehg中使用“shelve”工具时,我找不到任何方法将一个块分割成两个较小的块。例如,我有一块如下所示:

@@ -1,1 +1,2 @@
-hallo world
+hello world
+something else
我想搁置“其他东西”,这样我就可以提交“你好->你好”修复。然而,由于陆龟看到这是一个单一的块,我可以搁置这两个或没有任何变化


我还尝试通过命令行使用搁置扩展,但据我从文档中了解,它不提供只搁置部分文件的功能。

我不知道有什么命令可以做到这一点,但如果您使用的是Ortoisehg,可以通过在提交预览区域中选择修改的部分(复选框)来实现


请参见

您可以通过命令行实现您的目标。有交互式版本的
hg commit
hg revert
hg shelve
,如果需要,它们有低级选项可以一起破解补丁;您可以将它们与
-i
(或
--interactive
)命令行选项一起使用

这意味着您可以使用
hgcommit-i
hgcommit--amend-i
构建提交。如果安装了evolve扩展,可以使用
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的合并机制将变得混乱,无法干净地处理更改,而是将您转储到合并工具中,以解决此明显的冲突(这意味着需要进行大量额外的工作来解决)。因此,如果您想在行级别操作东西,我强烈建议使用
hg commit-I
hg commit-amend-I
hg shelve-I
如果不编辑补丁,效果很好)


为了增加方便性(防止您编辑修补程序),您还可以通过向
hgrc
文件中添加以下内容来启用“实验记录”选项:

[experimental]
crecord = true
这将为
hg commit-i
hg revert-i
hg shelve-i
启用基于终端的hunk编辑器,允许您选择单独的行和hunk(在内部,其工作方式与编辑补丁大致相同)。使用
键在该编辑器中获取帮助;使用
f
展开/折叠单个大块,使用空格键选择大块/线条


请注意,此工具与
hg shelve-i
结合使用的基于行的选择与编辑补丁具有相同的注意事项;i、 e.如果要进行基于行的选择,请使用
hg commit-i
hg commit--amend-i
。此外,基于行的选择
hg revert-i
仍将还原整个大块。(这个选项仍然被标记为实验性的是有原因的。)

我遇到的问题是,只有一个复选框,而该块包含这两个更改。如何将一个复选框转换为两个复选框?