Só queria acrescentar que também estou encontrando isso. Eu tenho todas as minhas outras coisas de configuração git globais ("exludesfiles" e "attrirutesfile") em% userprofile% /. Git / .gitignore (então em uma pasta), mas o .gitconfig eu adoraria que ficasse ao lado deles , mas tem que estar na raiz de% userprofile% .. realmente irritante.
WORMSS
6
Algum progresso desde que a pergunta foi feita? Meu .gitconfig fica em uma unidade de rede por padrão, o que significa que ele não pode lê-lo quando estou offline.
Lech Rzedzicki
Respostas:
67
Se você definir HOMEcomo c:\my_configuration_files\, o git localizará .gitconfig lá. A edição de variáveis de ambiente é descrita aqui . Você precisa definir a variável HOME e, em seguida, reabrir qualquer janela cmd.exe. Use o comando "set" para verificar se HOME realmente aponta para o valor correto.
Mudar o HOME, é claro, também afetará outros aplicativos. No entanto, ao ler o código-fonte do git, essa parece ser a única maneira de alterar a localização desses arquivos sem a necessidade de ajustar a linha de comando. Você também deve considerar a resposta de Stefan: você pode definir a variável GIT_CONFIG. No entanto, para dar a ele o efeito que você deseja, você precisa passar o --globalsinalizador para todas as invocações do git (mais qualquer arquivo .git / config local será ignorado).
Hmm, não tenho certeza se entendi corretamente, mas mudar o HOME não afetará também todos os outros aplicativos que o usam? Não existe uma maneira de mudar o HOME, mas local para o Git?
Torre em
Sim, teria efeito em outros aplicativos também. Você perguntou como alterar o local e eu disse a você. Veja minha edição.
Martin v. Löwis
10
Alguém realmente fez isso funcionar sem os efeitos colaterais de mudar de CASA bagunçando um monte de outras coisas?
Ade Miller
Provavelmente é uma solução que funciona na plataforma Windows. Funcionou também para mim. Usei o script refreshenv do Chocolatey para atualizar a variável de ambiente HOME que eu defini (variável de ambiente do usuário). Depois disso, obtive o local do arquivo desejado.
Rasgou Aurstad de
Tive que reinstalar o Git para que isso funcionasse. Se eu apenas adicionei uma nova variável de ambiente chamada HOME e movesse o .gitconfigarquivo para esse diretório, não funcionou.
Csaba de
46
Alterar o diretório HOME para isso está errado. Melhor é criar um link simbólico para gitconfig para o diretório HOME.
Mova seu .gitconfig do diretório inicial do usuário para o diretório desejado.
Pode valer a pena adicionar que se você executar git config --global para adicionar um item à sua configuração, seu link simbólico será sobrescrito com a cópia real do .gitconfig que está sendo usado. Encontrei esse problema ao testar um local onde \ PathForNewLocationOfConfig.gitconfig era minha pasta do Dropbox
MotoWilliams
8
Se o seu .gitconfig estiver localizado em uma unidade de rede, você poderá receber uma mensagem "O dispositivo não oferece suporte a links simbólicos", que exclui essa opção.
meio-
4
Não acho que essa solução funcione para ninguém. Na nossa empresa, $HOMEestá em uma unidade de rede e sempre que houver algum problema com a conexão de rede, também o link fica inacessível.
andreee
1
@MotoWilliams revisitando isso em 2017: o link simbólico permanece intacto após a edição com --global
Snake
2
Aqui, a polícia de grupo (AD) define HOMEDRIVE, HOMEPATH e HOMESHARE, mas não o simples, antigo e simples HOME. Na ausência de HOME, git parece usar alguma combinação dos três anteriores. Mas configurar HOME (por meio da metodologia usual para configurar variáveis de ambiente específicas do usuário) funciona: GIT usa o valor de HOME que você configurou e grouppolicy não destrói HOME.
David I. McIntosh
29
Resolvi esse problema usando uma abordagem ligeiramente diferente que vi funcionar para outros arquivos de configuração. Suporta Git Config inclui que permite apontar para um arquivo de configuração em outro local. Esse local alternativo é então importado e expandido no local como se fosse parte do arquivo .gitconfig. Portanto, agora tenho apenas uma única entrada em .gitconfig:
[include]
path = c:\\path\\to\\my.config
Todas as atualizações gravadas pelo Git no arquivo .gitconfig não sobrescreverão meu caminho de inclusão. Isso significa que, ocasionalmente, posso precisar mover valores de .gitconfig para my.config.
+1: sem configurações estranhas e meu gitconfig global é algo que eu armazeno em um repositório git, então manter o controle do que está lá é meu trabalho. Ao fazer alterações globais, apenas edito o arquivo global manualmente. Portanto, isso funciona perfeitamente para mim e não requer nenhuma estranheza como alterar sua variável de ambiente "HOME", que é uma ideia estranha apenas para colocar a configuração do Git onde você deseja. Afinal, o diretório inicial tem outros significados para muitos outros programas. Além disso, você pode colocar uma identidade diferente no topo e manter suas configurações-chave iguais entre as identidades com esta solução. Excelente!
user62177541
2
Eu me pergunto se é possível ter git config escrito no arquivo no arquivo [include] d.
Não sou nenhum mestre em Git, mas para pesquisar a solução que funcionou mais fácil para mim foi apenas ir C:\Program Files (x86)\Git\etce abrir profileem um editor de texto.
Há uma ifdeclaração na linha 37 # Set up USER's home directory. Peguei a ifdeclaração e coloquei no diretório local que eu queria que o gitconfig fosse, então apenas copiei meu arquivo gitconfig existente (estava em uma unidade de rede) para esse local.
Muito obrigado. Enquanto todas as outras opções falharam para mim, isso apenas me salvou um milhão de declarações git multiplicadas por 6 segundos: D aqui está o que eu fiz ... `HOME =" $ USERPROFILE \ Downloads \ Tools \ Git_Config "`
PravyNandas
2
A palavra 'home' (ou qualquer coisa parecida com sua linha: 37) não existe mais no git 2.24 (dezembro de 2019).
Frank Nocke
6
Para mim, alterar o local Iniciar em (de git-gui, pelo menos) não afetou onde procurava .gitconfig. Minha configuração no trabalho monta U: para nossa casa, mas não temos permissão para escrever em U: diretamente, apenas subdiretórios que foram criados para nós internamente, então isso foi um problema para mim.
Resolvi o problema criando um script em lote que substituiria as variáveis env HOMEDRIVE e HOMEPATH apenas para aquele aplicativo. Em seguida, alterei o atalho do menu Iniciar para apontar para aquele script em lote.
Se você estiver no Windows e tiver problemas para alterar as variáveis de ambiente ou mklinkpor causa de privilégios insuficientes, uma solução fácil para o seu problema é iniciar o git batch em outro local.
Basta clicar com o botão direito em Git Bash.exe, clicar em propriedades e alterar a propriedade "Iniciar em" para c:\my_configuration_files\.
Uau, trabalhe totalmente com facilidade. Criado um novo atalho e em 'propriedades-> iniciar em' alterado %HOMEDRIVE%%HOMEPATH%para `c: \ my_repo_folder`. Funcionou um encanto.
Shane
2
Isso não funcionou para mim. O arquivo .gitconfig ainda foi carregado do meu diretório inicial
Dave B
3
Eu queria fazer a mesma coisa. O melhor que consegui encontrar foi a solução da @MicTech. No entanto, como apontado por @MotoWilliams, isso não sobrevive a nenhuma atualização feita pelo Git no arquivo .gitconfig que substitui o link por um novo arquivo contendo apenas as novas configurações.
Resolvi isso escrevendo o seguinte script do PowerShell e executando-o em meu script de inicialização de perfil. Cada vez que é executado, ele copia todas as configurações que foram adicionadas ao .gitconfig do usuário para o global e, em seguida, substitui todo o texto no arquivo .gitconfig pelo cabeçalho [include] que importa o arquivo global.
Eu mantenho o arquivo .gitconfig global em um repositório junto com vários outros scripts e ferramentas globais. Tudo o que tenho a fazer é lembrar de verificar todas as alterações que o script anexa ao meu arquivo global.
Isso parece funcionar de forma bastante transparente para mim. Espero que ajude!
9 de setembro: Atualizado para detectar quando novas entradas adicionadas ao arquivo de configuração são duplicadas e ignorá-las. Isso é útil para ferramentas como SourceTree, que escreverá novas atualizações se não conseguirem encontrar as existentes e não seguirem as inclusões.
Como alguém que está interessado nisso há MUITO MUITO TEMPO. Veja no manual:
$ XDG_CONFIG_HOME / git / config - Segundo arquivo de configuração específico do usuário. E se$XDG_CONFIG_HOME não estiver definido ou vazio, $ HOME / .config / git / config será usado. Qualquer variável de valor único definida neste arquivo será sobrescrita pelo que estiver em ~ / .gitconfig. É uma boa idéia não criar este arquivo se você às vezes usa versões mais antigas do Git, pois o suporte para este arquivo foi adicionado recentemente.
Que só foi adicionado recentemente. Este dump é de 2.15.0.
Isso não está funcionando a partir do git 2.24, Win10, dezembro de 2019. git config --list --show-originmostra, o HOME original ainda está no lugar.
Frank Nocke
1
Para mim funcionou muito simples:
Copie ".gitconfig" do diretório antigo: para% USERPROFILE% (padrão em "c: \ usuários \ nome de usuário")
Clique com o botão direito nos ícones de início de GITGUI e GITBASH e altere "executar em": "% HOMEDRIVE %% HOMEPATH%" para "% USERPROFILE%". Claro que você pode usar qualquer outro diretório em vez de "% USERPROFILE%".
Solução sem ter que alterar o
SO da variável Windows HOME : Windows 10
git versão: 2.27.0.windows.1
Eu uso a versão portátil do Git, então todos os meus arquivos de configuração estão no meu pen-drive (E :). Isto é o que funcionou para mim:
Baixe o Git portátil em https://git-scm.com/ . Execute o arquivo e instale-o no local necessário. Eu instalei em E: \ git .
Execute git-bash.exe em E: \ git .
Eu queria colocar .gitconfige outros arquivos bash em E , então criei uma pasta chamada home onde quero todos eles. mkdir home
Vá para a pasta etc e abra o arquivo chamado profile (no meu caso, é E: \ git \ etc \ profile)
Adicione o caminho absoluto para o diretório inicial que criamos (ou para o diretório onde você deseja que seu arquivo .gitconfig esteja localizado) no final do arquivo de perfil . HOME="E:\git\home"
Agora, ele não procura mais no diretório C: \ Users <nome de usuário> .gitconfig, mas apenas procura no caminho definido acima.
$ git config --global --list
fatal: unable to read config file 'E:/git/home/.gitconfig': No such file or directory
Ele deu um erro porque não há um arquivo .gitconfig ainda. Isso é apenas para demonstrar que alteramos com êxito a localização do arquivo .gitconfig sem alterar o diretório HOME no Windows.
Respostas:
Se você definir
HOME
comoc:\my_configuration_files\
, o git localizará .gitconfig lá. A edição de variáveis de ambiente é descrita aqui . Você precisa definir a variável HOME e, em seguida, reabrir qualquer janela cmd.exe. Use o comando "set" para verificar se HOME realmente aponta para o valor correto.Mudar o HOME, é claro, também afetará outros aplicativos. No entanto, ao ler o código-fonte do git, essa parece ser a única maneira de alterar a localização desses arquivos sem a necessidade de ajustar a linha de comando. Você também deve considerar a resposta de Stefan: você pode definir a variável GIT_CONFIG. No entanto, para dar a ele o efeito que você deseja, você precisa passar o
--global
sinalizador para todas as invocações do git (mais qualquer arquivo .git / config local será ignorado).fonte
.gitconfig
arquivo para esse diretório, não funcionou.Alterar o diretório HOME para isso está errado. Melhor é criar um link simbólico para gitconfig para o diretório HOME.
fonte
$HOME
está em uma unidade de rede e sempre que houver algum problema com a conexão de rede, também o link fica inacessível.Resolvi esse problema usando uma abordagem ligeiramente diferente que vi funcionar para outros arquivos de configuração. Suporta Git Config inclui que permite apontar para um arquivo de configuração em outro local. Esse local alternativo é então importado e expandido no local como se fosse parte do arquivo .gitconfig. Portanto, agora tenho apenas uma única entrada em .gitconfig:
Todas as atualizações gravadas pelo Git no arquivo .gitconfig não sobrescreverão meu caminho de inclusão. Isso significa que, ocasionalmente, posso precisar mover valores de .gitconfig para my.config.
fonte
git config --file "included.file"
Procure na seção ARQUIVOS e AMBIENTE de
git help config
.fonte
Não sou nenhum mestre em Git, mas para pesquisar a solução que funcionou mais fácil para mim foi apenas ir
C:\Program Files (x86)\Git\etc
e abrirprofile
em um editor de texto.Há uma
if
declaração na linha 37# Set up USER's home directory
. Peguei aif
declaração e coloquei no diretório local que eu queria que o gitconfig fosse, então apenas copiei meu arquivo gitconfig existente (estava em uma unidade de rede) para esse local.fonte
Para mim, alterar o local Iniciar em (de git-gui, pelo menos) não afetou onde procurava .gitconfig. Minha configuração no trabalho monta U: para nossa casa, mas não temos permissão para escrever em U: diretamente, apenas subdiretórios que foram criados para nós internamente, então isso foi um problema para mim.
Resolvi o problema criando um script em lote que substituiria as variáveis env HOMEDRIVE e HOMEPATH apenas para aquele aplicativo. Em seguida, alterei o atalho do menu Iniciar para apontar para aquele script em lote.
fonte
Primeiro verifique a configuração de HOME e, em seguida, altere HOME e HOMEDRIVE para um diretório existente.
então mude HOME e HOMEDRIVE por
fonte
Se você estiver no Windows e tiver problemas para alterar as variáveis de ambiente ou
mklink
por causa de privilégios insuficientes, uma solução fácil para o seu problema é iniciar o git batch em outro local.Basta clicar com o botão direito em Git Bash.exe, clicar em propriedades e alterar a propriedade "Iniciar em" para
c:\my_configuration_files\
.fonte
%HOMEDRIVE%%HOMEPATH%
para `c: \ my_repo_folder`. Funcionou um encanto.Eu queria fazer a mesma coisa. O melhor que consegui encontrar foi a solução da @MicTech. No entanto, como apontado por @MotoWilliams, isso não sobrevive a nenhuma atualização feita pelo Git no arquivo .gitconfig que substitui o link por um novo arquivo contendo apenas as novas configurações.
Resolvi isso escrevendo o seguinte script do PowerShell e executando-o em meu script de inicialização de perfil. Cada vez que é executado, ele copia todas as configurações que foram adicionadas ao .gitconfig do usuário para o global e, em seguida, substitui todo o texto no arquivo .gitconfig pelo cabeçalho [include] que importa o arquivo global.
Eu mantenho o arquivo .gitconfig global em um repositório junto com vários outros scripts e ferramentas globais. Tudo o que tenho a fazer é lembrar de verificar todas as alterações que o script anexa ao meu arquivo global.
Isso parece funcionar de forma bastante transparente para mim. Espero que ajude!
9 de setembro: Atualizado para detectar quando novas entradas adicionadas ao arquivo de configuração são duplicadas e ignorá-las. Isso é útil para ferramentas como SourceTree, que escreverá novas atualizações se não conseguirem encontrar as existentes e não seguirem as inclusões.
fonte
Como alguém que está interessado nisso há MUITO MUITO TEMPO. Veja no manual:
$ XDG_CONFIG_HOME / git / config - Segundo arquivo de configuração específico do usuário. E se
$XDG_CONFIG_HOME
não estiver definido ou vazio, $ HOME / .config / git / config será usado. Qualquer variável de valor único definida neste arquivo será sobrescrita pelo que estiver em ~ / .gitconfig. É uma boa idéia não criar este arquivo se você às vezes usa versões mais antigas do Git, pois o suporte para este arquivo foi adicionado recentemente.Que só foi adicionado recentemente. Este dump é de 2.15.0.
Funciona para mim.
fonte
%PROGRAMFILES%\Git\etc
profile
HOME="c:\location_were_you_want_gitconfig"
Nota: As permissões de arquivo geralmente são restritas, então altere-as de acordo ou você não poderá salvar suas alterações.
fonte
git config --list --show-origin
mostra, o HOME original ainda está no lugar.Para mim funcionou muito simples:
captura de tela antes
captura de tela depois
fonte
Solução sem ter que alterar o
SO da variável Windows HOME : Windows 10
git versão: 2.27.0.windows.1
Eu uso a versão portátil do Git, então todos os meus arquivos de configuração estão no meu pen-drive (E :). Isto é o que funcionou para mim:
.gitconfig
e outros arquivos bash em E , então criei uma pasta chamada home onde quero todos eles.mkdir home
HOME="E:\git\home"
Agora, ele não procura mais no diretório C: \ Users <nome de usuário> .gitconfig, mas apenas procura no caminho definido acima.
Ele deu um erro porque não há um arquivo .gitconfig ainda. Isso é apenas para demonstrar que alteramos com êxito a localização do arquivo .gitconfig sem alterar o diretório HOME no Windows.
fonte