有个git工程:

root/
├── src
│   └── aaa
├── tmp
│   └── bbb
└── doc

然后有几个目录是git archive打包时希望排除的。查看了一下手册git help archive,里面提到man gitattributes可以知道如何添加export-ignore属性,来排序不希望的目录。

经过十几分钟的折腾与搜索,终于弄明白.gitattributes的用法和里面的目录/文件的表达方法了。记录如下:

.gitattributes可以放在任意目录下。并且根据目录的不同,内容表达也有区别。 例如想要排除 src/aaa/目录和tmp/bbb/目录,可以这样写:

1、root/目录下添加.gitattributes文件,内容如下:

/src/aaa   export-ignore

/tmp/bbb export-ignore

2、或者分别在src/和tmp/目录里各自添加文件:

# src/.gitattributes

/aaa    export-ignore

# tmp/.gitattributes

/bbb   export-ignore

这里最蛋疼的就是目录的表达,必须以/开始,而且不能以/结尾。如果想要指定某个子目录,只用一个aaa只会被解释为当前目录里的文件,子目录只有写全路径。。。

另外,如果跑去 src/目录执行git archive master,那么所有的父目录都不会被导出,父目录里的.gitattributes也是无效的。

嗯。就这么多。备忘一下。

, ,