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

Chr*_*ian 9 git version-control commit staging smartgit

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

Chr*_*ian 24

您可以使用stage命令实现此目的.首先,暂存包含要提交的更改的所有文件.在此示例中,除被调用文件之外的所有文件都DoNotCommit.php包含至少一行我们要提交的文件:在此输入图像描述

接下来,我们需要为包含功能A 功能B的行的所有文件打开索引编辑器.在这个例子中,我们需要检查并: Main.phpNewFeatures.php在此输入图像描述

这将打开索引编辑器.您会看到包含代码的三个选项卡:存储库(HEAD),索引,工作树:在此输入图像描述

对我们来说,只有存储库(HEAD)索引选项卡很重要.该库(HEAD)选项卡显示的文件已经提交的内容." 索引"选项卡显示我们要提交的更改.假设我们只想提交第一个代码块,使用以下myNewCompletedFeature函数:在此输入图像描述

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

在最后一步中,我们将实际提交新功能.确保在提交窗口中选择分阶段更改!在此输入图像描述

哇,我们现在完成了!

  • GIF动画的酷解释! (4认同)
  • 很可能是我在SO上看到的最清晰的答案. (4认同)