Percebi que tenho duas listas para core.autocrlf
quando executogit config -l
$ git config -l
core.symlinks=false
core.autocrlf=false
color.diff=auto
color.status=auto
color.branch=auto
color.interactive=true
pack.packsizelimit=2g
help.format=html
http.sslcainfo=/bin/curl-ca-bundle.crt
sendemail.smtpserver=/bin/msmtp.exe
diff.astextplain.textconv=astextplain
rebase.autosquash=true
user.name=name
[email protected]
core.autocrlf=true
Esses três últimos (de user.name para baixo) são os únicos em meu C:\users\username\.gitconfig
arquivo. De onde estão vindo todos os outros? Por que core.autocrlf está listado duas vezes?
Isso é com MSysGit 1.8.3, e também tenho Sourcetree instalado (Windows 7). No Sourcetree, desmarquei a opção "Permitir que o Sourcetree modifique seus arquivos de configuração Git globais"
git
msysgit
git-config
RyanW
fonte
fonte
git config --list --show-origin
, você não terá que adivinhar qual configuração git está onde. Veja minha resposta abaixoRespostas:
Git verifica quatro locais para um arquivo de configuração:
.gitconfig
Arquivo de sistema da sua máquina ..gitconfig
arquivo de usuário localizado em~/.gitconfig
.$XDG_CONFIG_HOME/git/config
ou$HOME/.config/git/config
..git/config
.As configurações se propagam na seguinte ordem, com cada arquivo adicionando ou substituindo as configurações definidas no arquivo acima dele.
Você pode ver o que cada arquivo definiu usando os seguintes comandos:
# System, applies to entire machine and all users $ git config --system --list $ git config --system --edit # User defined $ git config --global --list $ git config --global --edit
Você pode ver o que apenas o arquivo específico do repositório definiu abrindo o arquivo
.git/config
para esse repositório.Se você estiver usando o MSysGit no Windows, provavelmente encontrará seu
~/.gitconfig
arquivo de usuário onde%homepath%
quer que aponte, se usar aecho %homepath%
partir de um prompt de comando do Windows.Da documentação para
git config
:fonte
.gitconfig
arquivo de sistema da máquina " no Windows com msysgit?C:\Program Files (x86)\Git\etc\gitconfig
. Não tenho certeza se esse é o certo.C:\Program Files\Git\mingw64\etc\gitconfig
C:\Program Files\Git\etc\gitconfig
Você não precisa mais adivinhar qual configuração foi definida para onde, com o git 2.8! (Março de 2016)
Consulte commit 70 relevant79 , commit 473166b , commit 7454ee3 , commit 7454ee3 (19 de fevereiro de 2016), commit 473166b , commit 7454ee3 (19 de fevereiro de 2016), commit 7454ee3 (19 de fevereiro de 2016) e commit a0578e0 (17 de fevereiro de 2016) por Lars Schneider (
larsxschneider
) .(Fundido por Junio C Hamano -
gitster
- no commit dd0f567 , 26 de fevereiro de 2016)A
git config
página do manual agora indica:Por exemplo:
Isso vai retornar:
Para uma configuração, conforme comentado por wisbucky :
Com Git 2.26 (Q1 2020), você pode adicionar a
--show-scope
opção :fonte
user.cmdline=true
é necessário para--show-origin
trabalhar? Além disso, notei que--show-origin
precisa ser imediatamente depoisconfig
para trabalhar com--get
e--get-all
. Assim deveria ser... config --show-origin --get-all core.autocrlf
-c 'user.cmdline=true'
, que parece se referir ao escopo do teste: github.com/git/git/blob/…user.cmdline=true
era necessário no Git 2.13, mas não era mais necessário no Git 2.15.Depois de ter instalado o Git para Windows anteriormente e, subsequentemente, desinstalá-lo, descobri que há um arquivo de configuração instalado no
C:\Users\All Users\Git\config
qual é um arquivo de configuração de nível de sistema que persiste e afetará quaisquer pacotes MinGW32 Git futuros (no meu caso, eu estava executando um MinGW32 portátil Pacote Git fornecido pela minha empresa). Quando eu corriele me mostraria o arquivo de configuração do sistema localizado em
mingw32/etc/gitconfig
, mas ainda carregaria os valores do primeiro local também. Isso apareceu como um aviso de que os valores de configuração entraram em conflito ao tentar usar o Git LFS .(Observação: esta também pode ser uma situação em que os avisos LFS estão sendo muito assertivos, # 861 )
fonte
Você pode usar
--show-origin
para descobrir de onde vêm as configurações.Prioridade dos arquivos de configuração no Git para Windows:
Fonte: https://github.com/git-for-windows/git/blob/master@%7B2018-01-07%7D/Documentation/git-config.txt#L231
$PROGRAMDATA
é uma variável de ambiente. Você pode obter o valor dessas variáveis como este:No Git Bash você precisa usar
echo "$ProgramData"
. No CMD, você precisa usarecho %PROGRAMDATA%
. Observe que o Git Bash aparentemente finge que as variáveis de ambiente diferenciam maiúsculas de minúsculas.O que é
$(prefix)
?O prefixo é o diretório de nível superior no qual as coisas são instaladas. No Git para Windows, é
<some-path>/mingw64
ou<some-path>/mingw32
.fonte
git config -l
mostra todos os valores herdados do sistema, global e local.Portanto, você tem outro arquivo de configuração em algum lugar que está sendo carregado junto com o
.gitconfig
arquivo definido pelo usuário .fonte
Uma resposta completa para Windows (ou seja, uma versão Windows da resposta aceita):
Como o Linux, o Windows tem quatro níveis de arquivos de configuração / configurações e três são equivalentes diretos. O importante a notar é o outro - o 'Todos os aplicativos / usuários' - particularmente porque é aqui que o instalador define valores, por exemplo, 'core.autocrlf = true', e ainda não pode ser acessado a partir da linha de comando por isso causa confusão.
Todos os aplicativos e usuários
É como uma versão compartilhada das configurações do 'sistema' no caso de você ter vários aplicativos Git instalados. Não há comando 'git config' para acessá-los, mas eles ainda impactam o resultado líquido de uma configuração.
Localização do arquivo de configuração:
C: \ ProgramData \ Git \ config
(Observe que 'ProgramData' era 'Todos os usuários' em versões anteriores do Windows.)
Sistema
Localização do arquivo de configuração: C: / Arquivos de programas / Git / mingw64 / etc / gitconfig
Do utilizador
Localização do arquivo de configuração:% USERPROFILE% .gitconfig (resolve para 'C: / Usuários / <nome de usuário>')
Repositório
Localização do arquivo de configuração: [diretório do repositório atual] /. Git / config
fonte
Além do
git config -l --show-origin
que apresentei aqui , com o git 2.8 (março de 2016), agora você tem, com o Git 2.26 (primeiro trimestre de 2020)git config
aprendi a mostrar de que "scope
", além de em qual arquivo, cada configuração vem.Ver commit 145d59f , commit 9a83d08 , commit e37efa4 , commit 5c105a8 , commit 6766e41 , commit 6dc905d , commit a5cb420 (10 de fevereiro de 2020) e commit 417be08 , commit 3de7ee3 , commit 329e6ec (24 janeiro 2020) por Matthew Rogers (
ROGERSM94
) .(Fundido por Junio C Hamano -
gitster
- no commit 5d55554 , 17 de fevereiro de 2020)Exemplo:
fonte
No Windows 7 (talvez o mesmo ou semelhante para o Windows 10), para Visual Studio e a linha de comando Git, sua configuração global está em:
(o ponto está na frente do nome do arquivo)
Mas isso não é honrado pelo Sourcetree, pelo menos no modo Git Embedded, e a configuração está em:
(nenhum ponto na frente do nome do arquivo)
(Eu precisava atualizar os dois arquivos para modificar minhas configurações globais do Git para o comando Git e Sourcetree.)
Outra parte divertida. A configuração de ganchos Git estava funcionando a partir do
AppData\Local\...
local, mas depois de mais pesquisas via Process Monitor , percebi que de alguma forma Sourcetree também está carregando global da unidade mapeada da empresa para o meu usuário.Isso faz muito pouco sentido, pois poucos aplicativos procuram este local, mas de alguma forma o Sourcetree o faz, então se você não conseguir fazer com que funcione por configurações de local no Sourcetree, execute o Process Monitor e crie uma regra para registrar apenas o caminho contendo gitconfig pode descobrir onde realmente está sua configuração global no caso de um diretório de usuário mapeado em rede.
E isso pode não ser nem culpa do Sourcetree, pois vejo agora, enquanto escrevo isto, que o git.exe está carregando isso, mas isso acontece apenas para o git.exe executado pelo Sourcetree, enquanto uma linha de comando direta que o Git usa
%USERPROFILE%\.gitconfig
Por fim, peguei todos os resultados do Process Monitor, coloquei no SQL Server e executei uma consulta para obter resultados distintos (nenhuma ordem de execução específica, apenas classificada por caminho):
Não sei como essas configurações se relacionam entre si, mas sei que algumas substituem outras, algumas configurações funcionam de um local e outras funcionam de outro.
E a lista acima é invocada pelo Sourcetree , novamente uma linha de comando direta com Git parece funcionar bem
%USERPROFILE%\.gitconfig
, e isso não está nesta lista, mas seria assim (no Windows 7)C:\Users\pawel.cioch\.gitconfig
fonte
Se você deseja localizar o local real do arquivo, ele estará no seu diretório inicial.
Está oculto e precedido por um ".".
Então, se você estiver em um Mac, em seu terminal pode
cd ~ && open .gitconfig
ou abri-lo com o seu editor de texto favorito, por exemplocd ~ && atom .gitconfig
.fonte