13

Git似乎忽略了~/.gitconfig

$ git config --global core.filemode false

$ git config -l
core.filemode=false
core.filemode=true

所以现在有 2 个条目core.filemode并且 git 仍然没有忽略文件模式的变化

$ touch modetest

$ git add .

$ git commit -m test1
[master (root-commit) 320cfe4] test1
 0 files changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 modetest

$ chmod +x modetest

$ git diff
diff --git a/modetest b/modetest
old mode 100644
new mode 100755

根据torek 的回答,我将此行添加到我的.bash_profile

[ -d .git ] && git config core.filemode false
4

3 回答 3

15

在创建或重新初始化新存储库时,始终根据探测文件系统的结果git init设置新值。core.filemode您只需要手动:

git config core.filemode false

或者:

git config --unset core.filemode

使其尊重您的~/.gitconfig. 如果你git init再次运行 per-repo 设置将回到true你的系统上。

于 2012-04-30T00:00:14.153 回答
4

也许有点矫枉过正,但在 Cygwin 中,这让我很困扰,以至于我不得不更深入地研究这个问题。当 git 从源代码构建时,它会检查它所构建的文件系统以查看它是否理解可执行位。

我继续在我的 Cygwin 系统上从源代码构建 git 并将其安装到本地目录,然后将二进制文件添加到我的路径中。基本步骤是:

cd ~/
mkdir git
cd git
mkdir inst
git clone -c core.autocrlf=false https://github.com/git/git.git
cd git
NO_TRUSTABLE_FILEMODE=1 make prefix=/home/[username]/git/inst/
NO_TRUSTABLE_FILEMODE=1 make prefix=/home/[username]/git/inst/ install

然后在 .bashrc 中添加如下内容:

export PATH=/home/[username]/git/inst/bin:$PATH

当然,除非您在 Cygwin 中安装了所有构建依赖项,否则该构建将无法工作。稍微戳了一下,我就可以轻松完成了。现在该系统上的 git init 和 git clone 默认文件模式为 false。诀窍是为构建定义 NO_TRUSTABLE_FILEMODE。

于 2017-02-09T18:43:19.460 回答
0

(编辑)所以要恢复,在 Windows 上我们需要做:

git config --global --unset core.filemode
git config --unset core.filemode
git config core.filemode false

您可以在 Git 安装目录中为新的 git 文件夹 (init) 创建一个空配置文件:

C:\bin\Git\share\git-core\templates>echo > config
C:\bin\Git\share\git-core\templates>notepad config

并放入:

[core]
filemode = false
于 2014-08-22T02:13:40.600 回答