看来Git无视 ~/.gitconfig
$ git config --global core.filemode false
$ git config -l
core.filemode=false
core.filemode=true
Run Code Online (Sandbox Code Playgroud)
所以现在有2个条目core.filemode,git仍然没有忽略filemode的变化
$ 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
Run Code Online (Sandbox Code Playgroud)
根据torek的回答,我将这一行添加到了我的.bash_profile
[ -d .git ] && git config core.filemode false
Run Code Online (Sandbox Code Playgroud)
tor*_*rek 15
创建或重新初始化新仓库时,git init始终core.filemode根据探测文件系统的结果设置新值.你只需要手动:
git config core.filemode false
Run Code Online (Sandbox Code Playgroud)
要么:
git config --unset core.filemode
Run Code Online (Sandbox Code Playgroud)
使它尊重你的那个~/.gitconfig.如果git init再次运行,则per-repo设置将返回到true您的系统.
也许有点矫枉过正,但在 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
Run Code Online (Sandbox Code Playgroud)
然后将这样的内容添加到 .bashrc 中:
export PATH=/home/[username]/git/inst/bin:$PATH
Run Code Online (Sandbox Code Playgroud)
当然,除非您在 Cygwin 中安装了所有构建依赖项,否则该构建将无法工作。经过一番摸索,我没有遇到太多麻烦就做到了。现在,该系统上的 git init 和 git clone 默认文件模式为 false。诀窍是为构建定义 NO_TRUSTABLE_FILEMODE。
| 归档时间: |
|
| 查看次数: |
8039 次 |
| 最近记录: |