有一个简单的测试仓库,其中只有一个提交,包含两个文件,a
和b
,我可以获取特定文件的列表:
$ git ls-files a
a
或者列出除特定文件外的所有文件:
$ git ls-files . ':!b'
a
我可以创建特定文件的存档:
$ git archive HEAD a | tar tf -
a
但是我无法创建一个排除特定文件的所有文件的存档:
$ git archive HEAD . ':!b' | tar tf -
a
b
在我的真实代码库中,使用特定文件的存档选项对我来说不可行,因为它超过了最大命令行参数长度。
我知道我可以通过export-ignore
属性将要排除的文件列表存储在.gitattributes
中,但是这个列表是动态生成的。我可以自动更改该文件,但更改直到另一个提交后才会生效。
是否有其他调用可以在不需要另一个提交的情况下运行?
.git/info/attributes
不一定是最合适的方法,但它最符合我的需求,如果将来需要更多的功能,我可以将其更改为tar --delete
。 - user743382