如何使用SmartGit/Hg仅提交特定行

如何使用SmartGit/Hg仅提交特定行,git,version-control,commit,staging,smartgit,Git,Version Control,Commit,Staging,Smartgit,我正在使用SmartGit/Hg。我编辑了一些使用两个独立新功能的文件。现在,当我完成功能A的工作时,我想提交我的工作,但我不能只提交所有编辑的文件,因为它们包含功能B的更改,我现在不想提交这些更改。您可以使用命令来实现这一点。首先,准备包含要提交的更改的所有文件。在本例中,除了名为DoNotCommit.php的文件之外,所有文件都至少包含一行我们要提交的内容: 接下来,我们需要为包含功能A和功能B行的所有文件打开索引编辑器。在本例中,我们需要检查Main.php和NewFeatures.ph

我正在使用SmartGit/Hg。我编辑了一些使用两个独立新功能的文件。现在,当我完成功能A的工作时,我想提交我的工作,但我不能只提交所有编辑的文件,因为它们包含功能B的更改,我现在不想提交这些更改。

您可以使用命令来实现这一点。首先,准备包含要提交的更改的所有文件。在本例中,除了名为
DoNotCommit.php
的文件之外,所有文件都至少包含一行我们要提交的内容:

接下来,我们需要为包含功能A功能B行的所有文件打开索引编辑器。在本例中,我们需要检查
Main.php
NewFeatures.php

这将打开索引编辑器。代码中有三个选项卡:存储库(HEAD)、索引和工作树:

对我们来说,只有存储库(HEAD)和索引选项卡是重要的。Repository(HEAD)选项卡显示文件的已提交内容。“索引”选项卡显示我们将要提交的更改。假设我们只想使用
myNewCompletedFeature
函数提交第一块代码:

如您所见,我们从索引选项卡中删除了所有不想提交的代码。这不会从工作树中删除代码,这意味着您不会丢失任何更改。现在,我们对新的
NewFeatures.php
文件执行相同的操作,并再次保存:

在最后一步中,我们将实际提交新特性确保在提交窗口中选择阶段性更改


哇,我们现在完成了

动画GIF的酷解释!很可能是我在这方面见过的最清楚的答案。