Git忽略gitconfig?
Git似乎正在忽略Git忽略gitconfig?,git,chmod,git-config,Git,Chmod,Git Config,Git似乎正在忽略~/.gitconfig $ git config --global core.filemode false $ git config -l core.filemode=false core.filemode=true 所以现在有两个条目用于core.filemode,git仍然没有忽略filemode的更改 $ touch modetest $ git add . $ git commit -m test1 [master (root-commit) 320cfe4]
~/.gitconfig
$ git config --global core.filemode false
$ git config -l
core.filemode=false
core.filemode=true
所以现在有两个条目用于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
基于,我将这一行添加到我的.bash\u配置文件中
[-d.git]&&git config core.filemode false
创建或重新初始化新回购时,git init
始终设置一个新值
对于core.filemode
,基于探测文件系统的结果。你只要
必须手动:
git config core.filemode false
或:
使其尊重~/.gitconfig
中的配置。如果再次运行git init
在您的系统上,每次回购设置将返回到true
。(编辑)因此要继续,在windows上,我们需要执行以下操作:
git config --global --unset core.filemode
git config --unset core.filemode
git config core.filemode false
您可以在Git安装目录中为新Git文件夹(init)创建一个空配置文件:
并放入:
[core]
filemode = false
也许有点过分了,但在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中安装了所有构建依赖项,否则该构建将无法工作。只要稍微拨弄一下,我就能不费吹灰之力地做这件事。现在,该系统上的gitinit和gitclone将filemode默认为false。诀窍是为构建定义不可信任的文件模式。不完全确定git实际如何实现它。我必须深入研究源代码。啊,就是这样:它取决于git构建时配置项
NO\u TRUSTABLE\u FILEMODE
。如果没有定义,那么它会在运行时通过chmod ing.git/config
进行测试,并最终将其替换为.git/config.lock
,从而清除其临时chmod。临时版本设置了u+x位;如果它在chmod之后保持不变,git认为x位很重要。这很有道理,但也令人沮丧,我不得不将一个项目从一台计算机复制到另一台计算机上5次,直到我意识到发生了什么。)谢谢!谢谢,我知道git config--global core.fileMode false
没有用。git文件模式问题我每天都会遇到。每次我创建一个新项目时,我都必须配置这些东西。在我的情况下,情况正好相反。克隆后,本地.git/config文件包含:[core]filemode=false。知道为什么它会确定它应该为false(在windows 10上使用git bash for windows)?@u123:git的测试是:chmod.git/config
到+x(如果它是-x),或者-x(如果它是+x)。然后检查是否确实发生了更改。如果是这样,新替换的.git/config.lock
文件将获取一行filemode=true
。如果不是,则新的替换.git/config.lock
文件将获取一行filemode=false
。配置完成后,它将.git/config.log
重命名为.git/config
,并设置新的文件模式设置。即使进行编辑,git init
仍将返回filemode=true
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
export PATH=/home/[username]/git/inst/bin:$PATH