我在windows和linux/mac上都使用git仓库。当我在Windows上创建新的文件,或者在某些文本编辑器进行编辑,文件模式更改为775,我可以得到git的忽略与git添加钩子/让git忽略新文件的文件模式
git config core.filemode false
文件模式的变化,但我也想大多数新文件有模式664(不是775)。我想出了迄今为止最好的是pre-commit钩子
git diff --cached --name-only | egrep -v '\.(bat|py|sh|exe)' | xargs -d"\n" chmod 664
git diff --cached --name-only | egrep -v '\.(bat|py|sh|exe)' | xargs -d"\n" git add
但这确实错了的事情,如果我添加了一个新的文件,然后commiting之前再次编辑它,然后COMMITED无添加它。有没有更好的方法来做到这一点,或者像预先添加或后添加钩子一样?
编辑:git diff --cached --name-only
也给了我已删除的文件,所以我真正想要的是一样的东西git diff --cached --name-only --diff-filter=ACMRTUXB
污迹和干净似乎是对文件内容起作用的过滤器。有没有办法让他们对元数据采取行动? (将clean操作设置为chmod -x会导致错误。) – 2011-03-18 05:56:24