0

我正在 Windows 和 linux/mac 上使用 git 存储库。当我在 Windows 上创建新文件或在某些文本编辑器中编辑它们时,文件模式更改为 775。我可以让 git 忽略文件模式更改

git config core.filemode false

但我也希望大多数新文件具有模式 664(而不是 775)。到目前为止我想出的最好的是预提交钩子

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

但是如果我添加了一个新文件,然后在提交之前再次编辑它,然后在不添加它的情况下提交,那么这会做错事。有没有更好的方法来做到这一点,或者像 pre-add 或 post-add 钩子之类的东西?

编辑:git diff --cached --name-only还给了我已删除的文件,所以我真正想要的是git diff --cached --name-only --diff-filter=ACMRTUXB

4

2 回答 2

1

chmod可以使用git update-index --chmod=-x <files>直接修改索引,而不是使用和读取。

于 2011-03-17T07:00:18.777 回答
0

看看 git 属性。你可以在那里处理它。涂抹/清洁可能是一种处理方法。

于 2011-03-17T06:08:59.350 回答