Windows特定的Git配置设置; 他们在哪里设置?

Ben*_*ins 27 windows git git-config

我已经阅读了Git文档,我的Git配置中的设置来自哪里?然而我仍然无法理解我的一些设置.

我在Windows 10上使用的是Git 2.5.3.以下是输出git config -l:

? git config -l
core.symlinks=false
core.autocrlf=true
color.diff=auto
color.status=auto
color.branch=auto
color.interactive=true
pack.packsizelimit=2g
help.format=html
http.sslcainfo=C:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt
sendemail.smtpserver=/bin/msmtp.exe
diff.astextplain.textconv=astextplain
rebase.autosquash=true
user.name=Ben Collins
user.email=#redacted#
alias.sm=submodule
alias.br=branch
alias.co=checkout
alias.st=status
alias.rebuild=!git rm --cached -r . && git reset --hard
core.excludesfile=C:\Users\Benjamin\Documents\gitignore_global.txt
core.editor=c:/Users/Benjamin/AppData/Local/atom/bin/atom.cmd
core.attributesfile=C:\Users\Benjamin\.gitattributes
push.default=simple
merge.tool=p4merge
mergetool.p4merge.cmd=p4merge.exe "$BASE" "$LOCAL" "$REMOTE" "$MERGED"
mergetool.p4merge.path=C:/Program Files/Perforce/p4merge.exe
gui.encoding=utf-8
diff.guitool=p4merge
difftool.p4merge.path=C:/Program Files/Perforce/p4merge.exe
difftool.p4merge.cmd=p4merge.exe "$LOCAL" "$REMOTE"
mergetool.keepbackup=false
rerere.enabled=true
credential.helper=!'C:\Users\Benjamin\AppData\Roaming\GitCredStore\git-credential-winstore.exe'
filter.lfs.clean=git lfs clean %f
filter.lfs.smudge=git lfs smudge %f
filter.lfs.required=true
color.diff.whitespace=red reverse
Run Code Online (Sandbox Code Playgroud)

令人讨厌的是我在任何地方都找不到的前十二种设置.

C:\Program Files\Git
? git config --system --list
fatal: unable to read config file 'C:\Program Files\Git\mingw64/etc/gitconfig': No such file or directory
C:\Program Files\Git
? git config --global --list
user.name=Ben Collins
user.email=#redacted#
alias.sm=submodule
alias.br=branch
alias.co=checkout
alias.st=status
alias.rebuild=!git rm --cached -r . && git reset --hard
core.excludesfile=C:\Users\Benjamin\Documents\gitignore_global.txt
core.editor=c:/Users/Benjamin/AppData/Local/atom/bin/atom.cmd
core.attributesfile=C:\Users\Benjamin\.gitattributes
push.default=simple
merge.tool=p4merge
mergetool.p4merge.cmd=p4merge.exe "$BASE" "$LOCAL" "$REMOTE" "$MERGED"
mergetool.p4merge.path=C:/Program Files/Perforce/p4merge.exe
gui.encoding=utf-8
diff.guitool=p4merge
difftool.p4merge.path=C:/Program Files/Perforce/p4merge.exe
difftool.p4merge.cmd=p4merge.exe "$LOCAL" "$REMOTE"
mergetool.keepbackup=false
rerere.enabled=true
credential.helper=!'C:\Users\Benjamin\AppData\Roaming\GitCredStore\git-credential-winstore.exe'
filter.lfs.clean=git lfs clean %f
filter.lfs.smudge=git lfs smudge %f
filter.lfs.required=true
color.diff.whitespace=red reverse
Run Code Online (Sandbox Code Playgroud)

此外,当我尝试取消设置前十二个设置之一时,它没有任何效果:

C:\Users\Benjamin\Projects\blah [master +0 ~1 -0]
? git config --unset core.autocrlf
C:\Users\Benjamin\Projects\blah [master +0 ~1 -0]
? git config core.autocrlf
true
C:\Users\Benjamin\Projects\Saddleback\cm-core [master +0 ~1 -0]
? git config --unset-all core.autocrlf
C:\Users\Benjamin\Projects\Saddleback\cm-core [master +0 ~1 -0]
? git config core.autocrlf
true
Run Code Online (Sandbox Code Playgroud)

这些前十二种设置是硬编码还是平台特定的?我如何控制它们?

Rom*_*man 39

如此提交所解释的那样,他们仅为Windows添加了另一个配置位置,甚至在以下情况之前应用--system:

该文件/etc/gitconfig可用于存储系统范围的默认配置.在Windows上,配置也可以存储在 C:\ProgramData\Git\config; 该文件也将由基于libgit2的软件使用.

...

在Windows上,由于没有中央/etc/目录,还有另一个配置文件,用于包含 计算机上运行的所有 Git相关软件的设置.因此,此配置文件的优先级甚至低于$(prefix)/etc/gitconfig 文件.

所以我相信你可以找到那些神秘的设置C:\ProgramData\Git\config.


从那个提交我可以看到git config --system --list应该向你展示那些设置,但似乎没有C:\Program Files\Git\mingw64/etc/gitconfig文件中止操作,这可能是一个错误.

  • 请注意,从Git 2.17版本开始,似乎没有命令行工具可以修改** C:\ ProgramData \ Git \ config **中的设置。默认情况下,该文件似乎仅被锁定以具有Adminstrator特权,因此我要做的是在编辑器(Notepad ++)快捷方式上执行_Run As Administrator_上下文菜单,然后直接对其进行编辑。 (2认同)
  • >>“基于libgit2的软件也将使用此文件。” <<来自C:\ ProgramData \ Git \ Config的设置显​​示在列表中,但使用以下三个开关中的任何一个时均不显示:--system,--global,--local,这确实很奇怪。 (2认同)
  • 从 v2.23.0 开始,这不再是事实。现在的位置是“C:\Program Files\Git\etc\gitconfig”。请参阅 https://github.com/git-for-windows/build-extra/blob/master/ReleaseNotes.md (2认同)

Kar*_*ton 19

在我的git版本中,list命令上有一个--show-origin开关,它给出了应用设置的位置.我同意令人困惑的是,没有提供开关来访问ProgramData内的Windows配置位置.

C:\Users\karlb>git --version
git version 2.11.0.windows.3

C:\Users\karlb>git config --list --show-origin
file:"C:\\ProgramData/Git/config"       core.symlinks=false
file:"C:\\ProgramData/Git/config"       core.autocrlf=true
file:"C:\\ProgramData/Git/config"       core.fscache=true
file:"C:\\ProgramData/Git/config"       color.diff=auto
file:"C:\\ProgramData/Git/config"       color.status=auto
file:"C:\\ProgramData/Git/config"       color.branch=auto
file:"C:\\ProgramData/Git/config"       color.interactive=true
file:"C:\\ProgramData/Git/config"       help.format=html
file:"C:\\ProgramData/Git/config"       http.sslcainfo=C:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt
file:"C:\\ProgramData/Git/config"       diff.astextplain.textconv=astextplain
file:"C:\\ProgramData/Git/config"       rebase.autosquash=true
file:"C:\\Program Files\\Git\\mingw64/etc/gitconfig"    credential.helper=manager
file:"C:\\Program Files\\Git\\mingw64/etc/gitconfig"    difftool.usebuiltin=true
file:"C:\\Program Files\\Git\\mingw64/etc/gitconfig"    alias.lol=log --oneline --graph
file:"C:\\Program Files\\Git\\mingw64/etc/gitconfig"    alias.last=log -1 HEAD
file:C:/Users/karlb/.gitconfig  user.email=karl.horton@yahoo.com
file:C:/Users/karlb/.gitconfig  user.name=Karl Horton
Run Code Online (Sandbox Code Playgroud)

  • 列表中显示C:\ ProgramData \ Git \ Config的设置,但是使用以下三个开关中的任何一个时都没有显示:--system,--global,--local,这真是奇怪。 (3认同)