2015-09-29 28 views
13

Ho letto la documentazione Git e Where do the settings in my Git configuration come from? eppure non riesco ancora a dare un senso ad alcune delle mie impostazioni.Impostazioni di configurazione Git specifiche per Windows; dove sono impostati?

Sono su Git 2.5.3 su Windows 10. Ecco l'output di 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 

Cosa c'è di fastidio è che i primi dodici impostazioni non riesco a trovare da nessuna parte .

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 

Inoltre, quando si tenta di disinserire uno dei primi dodici impostazioni, non ha alcun effetto:

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 

Sono questi primi dodici impostazioni hardcoded o specifiche per la piattaforma in qualche modo? Come ottengo il controllo di loro?

+0

Questo aiuto: http://stackoverflow.com/q/2114111/1190388? – hjpotter92

+0

@ hjpotter92, no - non si tratta della configurazione globale (in $ HOME/.gitconfig). Ho una buona idea su questo. Sembra che le impostazioni di configurazione vengano sostanzialmente caricate in ordine, quindi qualcosa viene caricato _before_ la configurazione globale, ma la configurazione del sistema non esiste. Quello e il fatto che non riesco a rimuovere queste impostazioni sono il mistero. –

+2

Questi potrebbero essere i valori predefiniti di Git per le impostazioni che devono essere impostate su qualcosa. Invece di disabilitarli, puoi provare a impostarli su qualcos'altro, ad es. 'git config core.autocrlf false'? Se funziona, e quindi disinserisci 'core.autocrlf', torna a' true'? – Chris

risposta

22

Come this commit spiega, hanno aggiunto un altro luogo di configurazione solo per Windows, che viene applicato anche prima della --system:

Il file /etc/gitconfig può essere utilizzato per memorizzare una configurazione a livello di sistema di default . Su Windows, la configurazione può anche essere memorizzata in C:\ProgramData\Git\config; Questo file verrà utilizzato anche dal software basato su libgit2 .

...

In Windows, in quanto non v'è alcuna directory centrale /etc/, ci deve ancora un altro file di configurazione, destinata a contenere le impostazioni per tutti i software Git legati in esecuzione sulla macchina. Di conseguenza, questo file di configurazione ha una precedenza ancora più bassa rispetto al file .

Quindi credo che tu possa trovare quelle impostazioni misteriose in C:\ProgramData\Git\config.


Da che commettono posso vedere che git config --system --list dovrebbe hai mostrato quelle impostazioni, ma sembra che l'assenza di C:\Program Files\Git\mingw64/etc/gitconfig lima interrotta l'operazione, che è probabilmente un bug.

+0

Brillante, grazie! –

+0

Questa risposta non ha il massimo di quanti voti positivi merita :) PS. Ho il file gitconfig di sistema ma non vedo nient'altro su git config --system --list diverso da quello che c'è in quel file (non vedo il file di programma ben nascosto) –

5

Nella mia versione di git c'è uno switch --show-origin sul comando di lista che indica da dove è stata applicata l'impostazione. Sono d'accordo che è confuso che non vi è alcun interruttore fornito per accedere alla posizione di configurazione di Windows all'interno di ProgramData.

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 [email protected] 
file:C:/Users/karlb/.gitconfig user.name=Karl Horton 
Problemi correlati