Para onde é gravado o git config --global?

1025

Ao usar git config --globalpara configurar as coisas, em qual arquivo ele gravará?

Exemplo:

git config --global core.editor "blah"

Não consigo encontrá-lo nesses lugares:

C:\Program Files\Git\etc\gitconfig

C:\myapp\.git\config

Eu não defini um ENV?

Versão do My Git: 1.6.5.1.1367.gcd48 - no Windows 7

Ian Vaughan
fonte
1
Você está usando o msysgit ou algo mais?
Codeguru
359
git config --global --editdeve informar a localização exata, independentemente do tipo de configuração que você possui - basta olhar para o arquivo que aparece no seu editor.
MatrixFrog
55
git config --global --listtambém foi útil para quando não existe, pois fornece a localização de onde o git espera que esteja.
AJP
4
@AJP: Este é exatamente o meu problema, mas como mudar de onde ele quer salvar / ler?
Stijn de Witt
1
git configuração --list --show-origin irá dizer-lhe a localização
eddyP23

Respostas:

1240

Atualização 2016: com o git 2.8 (março de 2016), você pode simplesmente usar:

git config --list --show-origin

E com o Git 2.26 (primeiro trimestre de 2020), você pode adicionar uma --show-scopeopção

git config --list --show-origin --show-scope

Você verá qual configuração está definida onde.
Consulte "De onde vêm as configurações na minha configuração do Git? "

Como Steven Vascellaro aponta nos comentários ,

funcionará com locais de instalação não padrão. (ou seja, Git Portable )

(como o mais recente PortableGit-2.14.2-64-bit.7z.exe, que pode ser descompactado onde você quiser)


Resposta original (2010)

Dos documentos :

--global

Para opções de gravação: grave no ~/.gitconfigarquivo global em vez do repositório .git/config.

Como você está usando o Git for Windows , pode não estar claro a que local isso corresponde. Mas se você olhar para etc / profile (in C:\Program Files\Git), verá:

HOME="$HOMEDRIVE$HOMEPATH"

Significado:

C:\Users\MyLogin

(no Windows 7)

Isso significa que o arquivo está dentro C:\Users\MyLogin\.gitconfigdo Git no Windows 7.

VonC
fonte
8
Eu estava sendo muito burro, não adicionei o sinalizador "--global" ao comando de edição! "git config --global --edit" mostrou o arquivo com todas as minhas alterações de configuração, "git config --edit" era o arquivo que eu continuava abrindo e pensando, onde está o editor / compare / etc item de configuração que acabei de definir! Muito Obrigado.
Ian Vaughan
6
Obrigado. Eu já vi outros lugares onde se diz que está em% USERPROFILE%. No meu computador, o HOMEDRIVE e o HOMEPATH são remapeados para uma unidade de rede. Pesquisas na minha unidade local não estavam surgindo. Então, isso ajudou muito.
Mike M. Lin
2
Realmente útil, eu estava tendo o mesmo problema - se você estiver em um domínio com uma unidade doméstica mapeada, ele tentará criar a configuração do git lá. Isso faria uma boa solicitação de recurso - use% HOMEDRIVE% ou% USERPROFILE%
plasmid87
2
Por que isso é chamado global, quando é apenas para um usuário? (Para o unix) não /etc/gitconfigseria "global" e ~/.gitconfigapenas "local" ..... e acho que .git/config"hiper-local" ----- Basicamente, acho o termo "global" para isso confuso, e eu estava pensando se havia uma boa razão para a nomenclatura?
precisa saber é o seguinte
7
@PeterAjtai "global" porque é para todo o seu repositório. Ao contrário de "local" (apenas para um repo) ou "sistema" (que é para todos repo, para todos os usuários)
VonC
123

Eu também estava procurando o global .gitconfigna minha máquina Windows e encontrei esse truque interessante usando o git.

Faça a: git config --global -ee, se tiver sorte, você receberá um editor de texto com seu .gitconfigarquivo global . Basta procurar a pasta a partir daí (ou tentar salvar como ...), e pronto! :-)

LOUCO
fonte
É mesmo o que eu procurava! o comando -e! Porque editar uma propriedade de cada vez simplesmente não é a minha essência.
Patareco 5/16
1
A execução deste comando também criará um C:\Users\<user_name>\.gitconfigse estiver ausente.
Pbanka # 23/16
Eu estou correndo em um modo não-janela e não pode encontrar o lugar localização
Triynko
73

Em nixes *, é no ~/.gitconfig. Existe um arquivo correspondente em sua casa?

No Windows, você pode digitar git bash

notepad ~/.gitconfig
Ben
fonte
6
Isso deve ser o mesmo no Windows.
Felix Kling
2
Se você quer ficar com ele facilmente, escrever um pseudônimo :) Aqui é minha: alias gitconfig='open -a Sublime\ Text.app ~/.gitconfig'. Use o editor de texto que desejar.
agosto
43

Os caminhos para o msysgit são:

Windows XP -C:\Documents and Settings\<user_name>\.gitconfig

Windows Vista + C:\Users\<user_name>\.gitconfig

cerquilha
fonte
17
Provavelmente é melhor descrever isso como% USERPROFILE%, em seguida, a resposta funcionará para todas as versões do Windows, passadas, presentes e futuras.
jarmod
3
Exceto que eu acho que é% HOMEDRIVE %% HOMEPATH%, como em outras respostas, que é igual a% USERPROFILE% em muitos casos, mas alguns de nós têm configurações de TI apontando para uma unidade mapeada.
ojchase 4/10/18
34

A localização global é derivada, no Windows MsysGit, usando as variáveis ​​de ambiente HOMEDRIVE e HOMEPATH, a menos que você tenha definido uma variável de ambiente HOME. O é detalhado no script 'profile'.

No meu ambiente corporativo, o HOMEDRIVE é H :, que é mapeado para um URL de rede \\ share \ $. Todo o lote é mapeado para "Meus Documentos", que não é o local onde os outros esperariam. Pode haver outros problemas com a unidade para o remapeamento de URL. Nem consigo ajustar as variáveis ​​HOMEDRIVE ou HOMEPATH de qualquer maneira.

No meu caso, defini uma variável de ambiente HOME pessoal e apontei para D: \ git \ GitHOME e copiei todos os arquivos GIT (que estão sem extensão e) para o diretório GitHOME para segurança.

As variáveis ​​de ambiente do Windows podem ser definidas na guia Avançado, na caixa de diálogo Propriedades do meu computador.

Philip Oakley
fonte
1
Eu estava percorrendo as respostas a serem postadas nas variáveis HOMEDRIVEe HOMEPATH, uma vez que elas me pegaram de surpresa enquanto usava o Bower. Parece que vários utilitários no Windows lêem <system>:\User\<username>\.gitconfig, while the Git tool itself saves to % HOMEPATH% \. Gitconfig . I had to go one step further and copy the updated config file from my H: `(nossa rede usa a mesma letra de unidade para isso) na minha pasta de usuário local, só então o Git usou as regras corretamente quando chamado pelo Bower.
1
@ZaLiTHkA, Na minha rede corporativa, a unidade Home (H :) do usuário é re-mapeada também para o local C: \ User \, então eu não havia notado isso. Se você conseguir identificar quais são os utilitários FOSS que cometem o erro, isso seria uma informação útil para ajudar a contornar / reparar essas ferramentas. Se eles são ferramentas corporativas internas você está no seu próprio ;-)
Philip Oakley
A menos que seja mais complicado do que uma simples linha de setter, eu não estou vendo HOME definido no script etc \ profile. Ainda parece agir como descrito, mas não sei onde o HOME está sendo definido atualmente.
ojchase
@ojchase Minha parte da resposta de onde --glob config está escrita especificamente relacionada ao Windows. O núcleo git do Linux grava em locais como para onde o XDG direciona (ou seja, eu sei que o linux grava em outros lugares e tem outras convenções e, o mais importante, ele possui um diretório raiz enquanto o Windows tem 'Drives' ;-)
Philip Oakley
@PhilipOakley Na verdade, eu também estava me referindo ao Windows; desculpe, eu não estava claro. Combinando sua resposta e outras, eu estava esperando algum tipo de linha HOME = $HOMEDRIVE$HOMEPATH(ou similar) C:\Program Files\Git\etc\profilee essa linha parece não existir, mas provavelmente está acostumada? Eu não consegui descobrir exatamente o que está definindo $ HOME, a menos que seja definido por variável de ambiente que eu prefiro não fazer.
usar o seguinte código
12

Se você estiver usando o TortoiseGit em um PC com Windows, poderá usar:

Settings / Git / Config / Edit global .gitconfig

para abrir o arquivo .gitignore global.

Mas se você usar o PC com Windows (7) em um domínio, seu diretório de perfil poderá ser um compartilhamento de rede (montado como uma unidade). Nesse caso, o TortoiseGit (pelo menos: 1.6.5.0) está apontando para o diretório errado (em c: ...). Veja o TortoiseGit edição 922 fechada para mais informações. Ou usando% HOMEDRIVE %% HOMEPATH% para abrir o diretório que contém o arquivo .gitignore.

DanielaWaranie
fonte
10

Estou usando o SmartGit com o msysgit no Windows 8.1 e notei que pode haver três locais diferentes para o gitconfigarquivo:

%USERPROFILE%\.gitconfig
C:\Program Files (x86)\Git\etc\gitconfig
C:\Program Files (x86)\SmartGitHg\git\etc\gitconfig

Mas o que é usado é o de %USERPROFILE%\.gitconfig.

Benny Neugebauer
fonte
6

Pode ser útil observar (para plataformas * nix): alguns tipos de informações / configuração globais do git são armazenados /usr/share/git-core/, como scripts de preenchimento automático do git e os seguintes ganchos (padrão):

  • applypatch-msg
  • pós-atualização
  • pré-confirmar
  • prepare-commit-msg
  • commit-msg
  • pre-applypatch
  • pré-rebase
  • atualizar

Cada um deles pode conter seu próprio conjunto de comandos a serem executados, no momento descrito por seus respectivos nomes de arquivos.

samstav
fonte
2
Não é útil para a pergunta do OP.
orbfish
5

Eu também tive um problema com o meu global. .gitconfig Este é o caso de alguém também ter esse estranho

git disse:

fatal: erro desconhecido ao ler os arquivos de configuração

Agora eu consertei. O problema foi um segundo .gitconfignesta pasta:

c: \ Users \ myUser.config \ git \ config

Não sei de onde veio ... Mas agora tudo funciona como um charme de novo.

Juba
fonte
5

Quando o arquivo .gitconfig global é criado?

Primeiro, o git não cria automaticamente o arquivo de configuração global (.gitconfig) durante sua instalação. O arquivo não é criado até que seja gravado pela primeira vez. Se você nunca definiu uma variável do sistema, ela não estará no seu sistema de arquivos. Suponho que possa ser a fonte do problema.

Uma maneira de pedir ao Git para criá-lo é solicitar uma edição. Fazer isso forçará a criação do arquivo.

git config --global --edit

Se você monitorar a pasta inicial do usuário ao emitir esse comando, verá o arquivo .gitconfig sendo exibido magicamente.

Onde a configuração do git é armazenada?

Aqui está um rápido resumo do nome e do local dos arquivos de configuração associados aos três escopos Git, a saber , sistema , global e local :

  • Configuração do sistema Git: arquivo chamado gitconfig localizado em -git-install-location- / ming <32> / etc
  • Configuração global do Git: arquivo denominado .gitconfig localizado na pasta inicial do usuário (C: \ Users \ git user)
  • Configuração local do Git: arquivo nomeado config na pasta .git do repositório local

Obviamente, ver é acreditar, então aqui está uma imagem mostrando cada arquivo e cada local. Peguei a imagem de um artigo que escrevi sobre o assunto.

Locais do arquivo de configuração do Windows Git (TheServerSide.com)

Localização dos arquivos de configuração do Git

Cameron McKenzie
fonte
1
existe um quarto lugar chamado config portátil: aqui eles mencionam os 4 lugares; O Git para Windows suporta quatro níveis de configuração. No nível mais baixo é as definições de configuração máquina específica conhecida como "portátil" e vive uma "% ProgramData% \ Git \ config"
Badr Elmers
1
Mente explodida! Vou atualizar o artigo com as novas informações. Felicidades!
Cameron McKenzie
4

Estou executando o Windows 7 e usando o git como configuração, seguindo as instruções no GitHub (um ou dois anos atrás). Um caso de uso bastante comum, eu teria pensado. Nenhuma das respostas acima me ajudou e, depois de muita frustração, encontrei meu arquivo 'real' gitconfig no diretório a seguir;

C: \ Users \ Bill \ AppData \ Local \ GitHub \ PortableGit_054f2e797ebafd44a30203088cd 3d58663c627ef \ etc

Obviamente, substitua seu nome de usuário e, presumivelmente, o sufixo depois que PortableGit_ é um GUID exclusivo ou semelhante.

Bill Forster
fonte
1
Este é apenas o caso ao usar o GitHub para Windows.
Snake
3

Eu acho que é importante postar esta citação:

O Git para Windows suporta quatro níveis de configuração. No nível mais baixo, estão as definições de configuração específicas da máquina, conhecidas como "portáteis" e possuem um "% ProgramData% \ Git \ config". Um nível de prioridade é o conjunto de definições de instalação específicas conhecidas como "sistema", que ficam em "\ mingw64 \ etc \ gitconfig". Ambos os arquivos de configuração geralmente exigem privilégios elevados para serem modificados.

Começando com os valores específicos de uso conhecidos como configuração "global", que podem ser encontrados em "% UserProfile% .gitconfig", encontramos os arquivos de configuração "editáveis ​​pelo usuário". As configurações de prioridade mais alta estão na configuração "local", que geralmente pode ser encontrada em ".git \ config".

Veja que a recomendação no blog vinculado é modificar as configurações específicas do "sistema" ou "instalação", o que é bom, mas os usuários devem esperar que outras instalações do Git não absorvam essas configurações. Se você deseja configurações gerais da máquina, use o arquivo de configuração "portátil", caso contrário, escolha os arquivos de configuração "global" ou "local".

Felizmente, as pessoas acham essa informação útil.

fonte

Badr Elmers
fonte
3

Como o @MatrixFrog apontou em seu comentário , se o objetivo é editar a configuração, você pode executar:

git config --global --edit

Este comando abrirá o arquivo de configuração (neste caso, o --globalúnico) no editor de sua escolha e aguardará o fechamento do arquivo (assim como durante git rebase -i).

Dmitry Parzhitsky
fonte
Você pode usar isso para descobrir onde o mundial .gitconfigsitua-se -. Contanto que seu editor lhe diz qual diretório o arquivo está localizado em Você também pode usar outros interruptores ( --system, --local, etc.) para encontrar e editar outros .gitconfiglocais. PS -eé o mesmo que--edit
LightCC 5/09/19
1

Desinstale o Msysgit e instale o Cygwin + Git. O '.gitconfig' global estará aqui: C: \ cygwin (64) \ home \ [nome do usuário] \. Gitconfig.

Agora você não precisa se preocupar com uma variável de ambiente que possa ser usada por outros programas. Por exemplo, minha variável de ambiente me indicou uma unidade mapeada no meu ambiente de domínio do Windows de trabalho. Eu não quero o meu .gitconfig global sentado na minha unidade mapeada "em casa". Também não sei o que pode acontecer com outros aplicativos que podem depender dessa variável de ambiente do Windows. A divisão de operações pode precisar dessa variável de ambiente definida para a unidade mapeada por um motivo.

Além disso, você não precisa se preocupar com o fato de o Mysysgit substituir as definições de configuração do 'perfil' se você especificar um caminho específico para o '.gitconfig' global, usando este método.

Em geral, salve-se e use o cygwin bash shell nas janelas e seja mais feliz

meffect
fonte
1

Eu tive uma questão semelhante; o problema era que o .gitconfigarquivo estava localizado em

C:\Users\MyLogin\.gitconfig\

(no Windows 7)

Em outras palavras, o arquivo foi localizado em C:\Users\MyLogin\.gitconfig\.gitconfigvez de em C:\Users\MyLogin\.gitconfig(que é onde o Git estava procurando os arquivos).

rolandog
fonte
1

.gitconfig localização de arquivo

teste do macOS OK

global

# global config
$ cd ~/.gitconfig

# view global config
$ git config --global -l

local

# local config
$ cd .git/config

# view local config
$ git config -l

talvez um bônus para você: Vimou VSCodepara editar a configuração do git


# open config with Vim

# global config
$ vim ~/.gitconfig

# local config
$ vim .git/config


# open config with VSCode

# global config
$ code ~/.gitconfig

# local config
$ code .git/config
xgqfrms
fonte
0

Eu instalei meu Git em: C:\Users\_myuserfolder_\AppData\Local\Programs\Git

KikeSP
fonte