De forma predeterminada en Windows, Git coloca el .gitconfig global en c:\documents and settings\user\
¿Cómo puedo cambiar esa posición para que se almacene .gitconfig c:\my_configuration_files\?
¿Se puede hacer en absoluto?
De forma predeterminada en Windows, Git coloca el .gitconfig global en c:\documents and settings\user\
¿Cómo puedo cambiar esa posición para que se almacene .gitconfig c:\my_configuration_files\?
¿Se puede hacer en absoluto?
Respuestas:
Si se establece HOMEque c:\my_configuration_files\, a continuación, git localizará .gitconfig allí. La edición de variables de entorno se describe aquí . Debe configurar la variable INICIO y luego volver a abrir cualquier ventana de cmd.exe. Use el comando "set" para verificar que HOME efectivamente apunte al valor correcto.
Por supuesto, cambiar HOME también afectará a otras aplicaciones. Sin embargo, al leer el código fuente de git, esa parece ser la única forma de cambiar la ubicación de estos archivos sin la necesidad de ajustar la línea de comando. También debe considerar la respuesta de Stefan: puede establecer la variable GIT_CONFIG. Sin embargo, para darle el efecto que desea, debe pasar la --globalbandera a todas las invocaciones de git (además de cualquier archivo .git / config local se ignora).
.gitconfigarchivo a ese directorio, no funcionó.
Cambie el directorio HOME porque esto es incorrecto. Mejor es crear un enlace simbólico para gitconfig al directorio HOME.
$HOMEestá en una unidad de red y siempre que hay algún problema con la conexión de red, el enlace tampoco está disponible.
He resuelto este problema utilizando un enfoque ligeramente diferente que he visto funcionar para otros archivos de configuración. Git config soportes incluye que le permite apuntar a un archivo de configuración en otra ubicación. Luego, esa ubicación alternativa se importa y se expande en su lugar como si fuera parte del archivo .gitconfig. Entonces ahora solo tengo una sola entrada en .gitconfig:
[include]
path = c:\\path\\to\\my.config
Cualquier actualización escrita por Git en el archivo .gitconfig no sobrescribirá mi ruta de inclusión. Significa que ocasionalmente puedo necesitar mover valores de .gitconfig a my.config.
git config --file "included.file"
Busque en la sección ARCHIVOS y MEDIO AMBIENTE de git help config.
No soy un maestro de Git, pero buscar la solución que funcionó más fácilmente para mí fue simplemente ir C:\Program Files (x86)\Git\etcy abrir profileen un editor de texto.
Hay una ifdeclaración en la línea 37 # Set up USER's home directory. ifSaqué la declaración y lo puse en el directorio local que quería que fuera el gitconfig, luego simplemente copié mi archivo gitconfig existente (estaba en una unidad de red) en esa ubicación.
Para mí, cambiar la ubicación de Inicio en (de git-gui al menos) no afectó dónde buscaba .gitconfig. Mi configuración en el trabajo monta U: para nuestra casa, pero no tenemos permiso para escribir en U: directamente, solo subdirectorios que fueron creados para nosotros en el interior, así que esto fue un factor decisivo para mí.
Resolví el problema creando un script por lotes que anularía las variables env HOMEDRIVE y HOMEPATH solo para esa aplicación. Luego cambié mi acceso directo al menú Inicio para apuntar a ese script por lotes en su lugar.
Si está en Windows y tiene problemas para cambiar las variables de entorno o mklinkdebido a privilegios insuficientes, una solución fácil a su problema es iniciar git batch en otra ubicación.
Simplemente haga clic derecho en Git Bash.exe, haga clic en propiedades y cambie la propiedad "Iniciar en" a c:\my_configuration_files\.
%HOMEDRIVE%%HOMEPATH%a `c: \ my_repo_folder`. Funcionó de maravilla.
Quería hacer lo mismo. Lo mejor que pude encontrar fue la solución de @ MicTech. Sin embargo, como señaló @MotoWilliams, esto no sobrevive a las actualizaciones realizadas por Git al archivo .gitconfig, que reemplaza el enlace con un nuevo archivo que contiene solo la nueva configuración.
Resolví esto escribiendo el siguiente script de PowerShell y ejecutándolo en el script de inicio de mi perfil. Cada vez que se ejecuta, copia cualquier configuración que se haya agregado al .gitconfig del usuario al global y luego reemplaza todo el texto del archivo .gitconfig con un encabezado [include] que importa el archivo global.
Mantengo el archivo .gitconfig global en un repositorio junto con muchos otros scripts y herramientas globales. Todo lo que tengo que hacer es recordar verificar cualquier cambio que el script agregue a mi archivo global.
Esto parece funcionar de manera bastante transparente para mí. ¡Espero eso ayude!
9 de septiembre: actualizado para detectar cuando las nuevas entradas agregadas al archivo de configuración son duplicadas e ignorarlas. Esto es útil para herramientas como SourceTree que escribirán nuevas actualizaciones si no pueden encontrar las existentes y no siguen las inclusiones.
function git-config-update
{
$localPath = "$env:USERPROFILE\.gitconfig".replace('\', "\\")
$globalPath = "C:\src\github\Global\Git\gitconfig".replace('\', "\\")
$redirectAutoText = "# Generated file. Do not edit!`n[include]`n path = $globalPath`n`n"
$localText = get-content $localPath
$diffs = (compare-object -ref $redirectAutoText.split("`n") -diff ($localText) |
measure-object).count
if ($diffs -eq 0)
{
write-output ".gitconfig unchanged."
return
}
$skipLines = 0
$diffs = (compare-object -ref ($redirectAutoText.split("`n") |
select -f 3) -diff ($localText | select -f 3) | measure-object).count
if ($diffs -eq 0)
{
$skipLines = 4
write-warning "New settings appended to $localPath...`n "
}
else
{
write-warning "New settings found in $localPath...`n "
}
$localLines = (get-content $localPath | select -Skip $skipLines) -join "`n"
$newSettings = $localLines.Split(@("["), [StringSplitOptions]::RemoveEmptyEntries) |
where { ![String]::IsNullOrWhiteSpace($_) } | %{ "[$_".TrimEnd() }
$globalLines = (get-content $globalPath) -join "`n"
$globalSettings = $globalLines.Split(@("["), [StringSplitOptions]::RemoveEmptyEntries)|
where { ![String]::IsNullOrWhiteSpace($_) } | %{ "[$_".TrimEnd() }
$appendSettings = ($newSettings | %{ $_.Trim() } |
where { !($globalSettings -contains $_.Trim()) })
if ([string]::IsNullOrWhitespace($appendSettings))
{
write-output "No new settings found."
}
else
{
echo $appendSettings
add-content $globalPath ("`n# Additional settings added from $env:COMPUTERNAME on " + (Get-Date -displayhint date) + "`n" + $appendSettings)
}
set-content $localPath $redirectAutoText -force
}
Como alguien que ha estado interesado en esto por MUCHO TIEMPO. Ver en el manual:
$ XDG_CONFIG_HOME / git / config - Segundo archivo de configuración específico del usuario. Si $XDG_CONFIG_HOMEno está configurado o vacío, se usará $ HOME / .config / git / config. Cualquier variable de un solo valor establecida en este archivo se sobrescribirá con lo que esté en ~ / .gitconfig. Es una buena idea no crear este archivo si a veces usa versiones anteriores de Git, ya que recientemente se agregó soporte para este archivo.
Que se agregó recientemente. Este volcado es de 2.15.0.
Funciona para mi.
%PROGRAMFILES%\Git\etcprofileHOME="c:\location_were_you_want_gitconfig"Nota: Los permisos de archivo generalmente están restringidos, así que cámbielos en consecuencia o no podrá guardar sus cambios.
git config --list --show-originmuestra, el HOME original todavía está en su lugar.
Para mí funcionó muy simple:
Solución sin tener que cambiar el
SO variable de Windows HOME : Windows 10
versión git: 2.27.0.windows.1
Utilizo la versión portátil de Git, por lo que todos mis archivos de configuración están en mi pen-drive (E :). Esto es lo que funcionó para mí:
.gitconfigy otros archivos bash en E , así que creé una carpeta llamada home donde los quiero todos.mkdir homeHOME="E:\git\home"Ahora ya no busca en el directorio C: \ Users <nombre de usuario> .gitconfig, sino que solo busca en la ruta establecida anteriormente.
$ git config --global --list
fatal: unable to read config file 'E:/git/home/.gitconfig': No such file or directory
Dio un error porque todavía no hay un archivo .gitconfig allí. Esto es solo para demostrar que hemos cambiado con éxito la ubicación del archivo .gitconfig sin cambiar el directorio HOME en Windows.