我有一个git结帐。所有的文件权限都不同于git认为它们应该是什么,因此它们都显示为修改。

没有触及文件的内容(只是想修改权限),我如何设置所有文件的权限,git认为他们应该是什么?


当前回答

Git不存储除可执行脚本以外的文件权限。考虑使用git-cache-meta之类的工具来保存文件所有权和权限。

Git只能存储两种模式:755(可执行)和644(不可执行)。如果你的文件是444,git会存储它的644。

其他回答

你也可以尝试一个前/后结帐挂钩。

参见:自定义Git - Git钩子

我知道这很古老,但我来自谷歌,我没有找到答案

如果你没有零钱想留着,我有一个简单的解决办法:

git config core.fileMode true
git reset --hard HEAD

etckeeper工具可以处理权限和:

etckeeper init -d /mydir

你可以把它用在其他地方,而不是/等等。

使用你的包管理器安装或从上面的链接获取源代码。

Git不存储除可执行脚本以外的文件权限。考虑使用git-cache-meta之类的工具来保存文件所有权和权限。

Git只能存储两种模式:755(可执行)和644(不可执行)。如果你的文件是444,git会存储它的644。

git diff -p \
| grep -E '^(diff|old mode|new mode)' \
| sed -e 's/^old/NEW/;s/^new/old/;s/^NEW/new/' \
| git apply

将工作在大多数情况下,但如果你有外部差异工具,如meld安装,你必须添加-no-ext-diff

git diff --no-ext-diff -p \
    | grep -E '^(diff|old mode|new mode)' \
    | sed -e 's/^old/NEW/;s/^new/old/;s/^NEW/new/' \
    | git apply

在我的情况下需要什么