如何在SmartGit/Hg中仅提交特定行?

12

我正在使用SmartGit/Hg。我编辑了一些文件,分别用于两个不同的新特性。现在,当我完成了特性A的工作后,我想提交我的工作,但我不能仅仅提交所有编辑过的文件,因为它们包含了特性B的更改,而我现在不想提交这些更改。

1个回答

28
您可以使用 stage 命令来实现这一点。首先,stage 所有包含要提交更改的文件。在本例中,除了名为 DoNotCommit.php 的文件以外,所有文件都包含至少一行我们想要提交的代码:enter image description here

接下来,我们需要打开所有包含 Feature A Feature B 行的文件的索引编辑器。在本例中,我们需要检查 Main.phpNewFeatures.phpenter image description here

这将打开索引编辑器。您会看到具有代码的三个选项卡:存储库(HEAD)索引工作目录enter image description here

对我们而言,只有存储库(HEAD)索引选项卡很重要。 存储库(HEAD)选项卡显示文件已经提交的内容。索引选项卡显示我们将要提交的更改。假设我们只想提交第一个代码块,即 myNewCompletedFeature函数:enter image description here

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

在最后一步中,我们将实际提交新功能。请确保在提交窗口中选择“暂存的更改”!enter image description here
哇,我们现在完成了!

4
酷炫的解释,配有动态图! - deeshank
4
可能是我在 Stack Overflow 上见过的最清晰的答案。 - CAD bloke

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接