Git忽略gitconfig?

时间:2012-04-29 23:28:10

标签: git chmod git-config

看起来Git忽略了~/.gitconfig

$ git config --global core.filemode false

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

所以现在core.filemode有2个条目,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’s answer,我将此行添加到.bash_profile

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

3 个答案:

答案 0 :(得分:15)

创建或重新初始化新仓库时,git init始终设置新值 根据探测文件系统的结果,core.filemode。你会的 必须手动:

git config core.filemode false

或者:

git config --unset core.filemode

使其尊重~/.gitconfig中的那个。如果您再次运行git init 每回购设置将返回到您系统上的true

答案 1 :(得分:2)

也许有点矫枉过正,但在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在该系统上默认filemode为false。诀窍是为构建定义NO_TRUSTABLE_FILEMODE。

答案 2 :(得分:0)

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

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

你可以在Git install dir中为新的git文件夹(init)创建一个空的配置文件:

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

放在里面:

[core]
filemode = false