直接跳转到'git add-i'补丁命令(5)

直接跳转到'git add-i'补丁命令(5),git,version-control,Git,Version Control,我如何让git add-I直接以补丁模式启动,而不必键入5+Enter 我知道GitAdd-p,但这与它没有显示要从中选择的文件列表不同 这很烦人,因为我想在git add-I和git commit之间快速切换,以将我的脏树变成一些漂亮的提交。您可以做的是“git add-p”并将文件名添加为命令行参数。 通过良好的制表符完成功能,只完成脏文件,其效果与从菜单中拾取脏文件一样。要实现这一点,对perl文件进行更改相当容易。如果您不喜欢修补所有文件的默认git add-p行为,我只建议您这样做 查

我如何让git add-I直接以补丁模式启动,而不必键入5+Enter

我知道GitAdd-p,但这与它没有显示要从中选择的文件列表不同


这很烦人,因为我想在git add-I和git commit之间快速切换,以将我的脏树变成一些漂亮的提交。

您可以做的是“git add-p”并将文件名添加为命令行参数。
通过良好的制表符完成功能,只完成脏文件,其效果与从菜单中拾取脏文件一样。

要实现这一点,对perl文件进行更改相当容易。如果您不喜欢修补所有文件的默认git add-p行为,我只建议您这样做

查找git add interactive的副本,并使用您喜爱的编辑器打开。转到patch_update_cmd子例程。在那里,有一个if语句测试$patch_模式。删除if语句的顶部,或将其设置为使条件始终计算为false。保存并测试

下面是我为完成这项工作所做的一个例子

if (0) {
  @them = @mods;
}
else {
  @them = list_and_choose({ PROMPT => 'Patch update',
          HEADER => $status_head, },
        @mods);
}
另一个可能的变化点是在文件的最底部。在if语句之后,您可以将$patch_mode更改为一些false值,效果应该是相同的


注意:如果您使用的是软件包管理器或类似的跟踪已安装软件包的工具,您可能会遇到一些问题,我不确定。

如果您不介意打开gui,请使用git gui。

我有git的tab completion,但它似乎不会只给我git“add-p”上的脏文件。否则,这可能是一个可行的选择。我仍然希望使用git add-I接口,因此没有参数的git add-p会自动假定您希望以补丁方式添加所有修改过的文件。这样做不会有太大的收获…谢谢,等我有更多的时间,我会试试的。如果我这样做,我会和维护人员谈谈,看看是否可以在之前将其合并到上游。我对维护自己的git fork不感兴趣: