在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
接收要添加为参数的文件?有道理吗?
我的问题有更好的解决方案吗?
答案 0 :(得分:0)
处理这种情况的最佳方法是使用某种.gitignore
模式来忽略特定类型的文件,也可能会将您要忽略的文件写入特定位置。
例如,如果您尝试忽略二进制图像,则可以放置*.jpg
,*.png
和*.gif
(或任何格式)。如果您想排除的扩展名缺少扩展名,例如典型的Unix二进制名称,您也可以使用否定模式,尽管您可以将所有这些二进制文件写入单个build
目录中,然后将其忽略会更容易。
如果由于某种原因这不可能,那么使用不同的调用会更有效。 grep
可以指定其匹配的文件名,并且使用-I
选项将不匹配任何二进制文件。因此,您可以通过编写以下命令来提高命令的效率:
find . -type f -print0 | xargs -0 grep -IlZ . | xargs -0 git add
请注意,此命令还排除空文件,并且可能排除仅包含换行符的文件。不过,这可能满足您的需求。