如何仅在文本文件上进行git add工作?

时间:2019-04-21 19:07:55

标签: git

在debian服务器上,我想自动化一个git add命令,该命令仅从文件夹树添加文本文件,而不添加二进制文件。

我在git文档中看到git没有提供此功能,因此我找到了以下解决方案:

/usr/bin/find . -type f -exec grep -Iq . {} \; -and -print0 | /usr/bin/xargs -0 /usr/bin/git add

它使用grep的功能,该功能能够区分非文本文件,并将文本文件名传递给git add

但是,每个文本文件都会产生一个git add命令,并且对于许多文件而言,该命令非常慢。

我搜索了一种方法来将要添加的文件列表传递给git add,但找不到任何文件。

是否有一种方法可以使git add接收要添加为参数的文件?有道理吗?

我的问题有更好的解决方案吗?

1 个答案:

答案 0 :(得分:0)

处理这种情况的最佳方法是使用某种.gitignore模式来忽略特定类型的文件,也可能会将您要忽略的文件写入特定位置。

例如,如果您尝试忽略二进制图像,则可以放置*.jpg*.png*.gif(或任何格式)。如果您想排除的扩展名缺少扩展名,例如典型的Unix二进制名称,您也可以使用否定模式,尽管您可以将所有这些二进制文件写入单个build目录中,然后将其忽略会更容易。

如果由于某种原因这不可能,那么使用不同的调用会更有效。 grep可以指定其匹配的文件名,并且使用-I选项将不匹配任何二进制文件。因此,您可以通过编写以下命令来提高命令的效率:

find . -type f -print0 | xargs -0 grep -IlZ . | xargs -0 git add

请注意,此命令还排除空文件,并且可能排除仅包含换行符的文件。不过,这可能满足您的需求。