usuario setup password name first cambiar and git

setup - Cambiar la ubicación de.gitconfig en Windows



login git bash (10)

De forma predeterminada en Windows Git coloca global .gitconfig en c:/documents and settings/user/

¿Cómo puedo cambiar esa posición para que .gitconfig se almacene en c:/my_configuration_files/ ?

¿Se puede hacer?


Cambiar el directorio HOME para esto es incorrecto. Mejor es crear un enlace simbólico para gitconfig al directorio HOME.

  1. Mueva su .gitconfig del directorio de inicio del usuario, al directorio donde desee.
  2. Ejecutar línea de comando como administrador
  3. Ve al directorio de inicio de tu usuario
  4. Introduzca mklink .gitconfig / PathForNewLocationOfConfig.gitconfig

Como alguien que ha estado interesado en esto durante MUCHO TIEMPO. Ver del manual:

$XDG_CONFIG_HOME/git/config - Segundo archivo de configuración específico del usuario. Si $XDG_CONFIG_HOME no está configurado o vacío, se usará $ HOME / .config / git / config. Cualquier variable de un solo valor configurada en este archivo será sobrescrita por lo que esté en ~ / .gitconfig. Es una buena idea no crear este archivo si a veces utiliza versiones anteriores de Git, ya que el soporte para este archivo se agregó hace poco.

Que fue agregado recientemente. Este volcado es de 2.15.0.

Funciona para mi.


He resuelto este problema utilizando un enfoque ligeramente diferente que he visto funcionar para otros archivos de configuración. Git Config admite inclusiones que le permite apuntar a un archivo de configuración en otra ubicación. Esa ubicación alternativa se importa y expande en su lugar como si fuera parte del archivo .gitconfig. Así que ahora solo tengo una entrada en .gitconfig:

[include] path = c://path//to//my.config

Las actualizaciones escritas por Git en el archivo .gitconfig no sobrescribirán mi ruta de inclusión. Significa que de vez en cuando podría necesitar mover valores de .gitconfig a my.config.



No soy un experto en git, pero al buscar la solución que me resultó más fácil fue ir a C: / Archivos de programa (x86) / Git / etc y abrir el "perfil" en un editor de texto. Hay una instrucción if en la línea 37 "# Configurar el directorio de inicio del USUARIO" Saqué la declaración if y puse en el directorio local que quería que fuera el gitconfig, luego copié mi archivo gitconfig existente (estaba en una unidad de red) a esa ubicación.


Para mí, cambiar la ubicación de inicio en (al menos de git-gui) no afectó a dónde buscó .gitconfig. Mi configuración en el trabajo se monta en U: para nuestro hogar, pero no tenemos permiso para escribir en U: directamente, solo los subdirectorios que se crearon para nosotros en el interior, así que esto fue un factor decisivo para mí.

Resolví el problema haciendo un script por lotes que anularía las variables de env HOMEDRIVE y HOMEPATH solo para esa aplicación. Luego cambié el atajo del menú Inicio para apuntar a ese script por lotes.


Primero revise la configuración de INICIO, luego cambie INICIO y HOMEDRIVE a un directorio existente.

c:/git>set HOME HOME=U:/ HOMEDRIVE=U: HOMEPATH=/

luego cambie HOME y HOMEDRIVE por

set HOME=c:/tmp set HOMEDRIVE=C:


Si configura HOME en c:/my_configuration_files/ , entonces git ubicará .gitconfig allí. La edición de variables de entorno se describe here . Debe configurar la variable HOME y luego volver a abrir cualquier ventana cmd.exe. Use el comando "set" para verificar que HOME realmente apunte al valor correcto.

Cambiar HOME afectará, por supuesto, 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 debería considerar la respuesta de Stefan: puede establecer la variable GIT_CONFIG. Sin embargo, para darle el efecto que desea, debe pasar el indicador --global a todas las invocaciones de git (además de cualquier archivo .git / config local se ignoran).


Si está en Windows y tiene problemas al cambiar las variables de entorno o mklink debido a privilegios insuficientes, una solución fácil a su problema es iniciar el lote de git en otra ubicación.

Simplemente haga clic con el botón derecho en Git Bash.exe, haga clic en Propiedades y cambie la propiedad "Comenzar en" a c:/my_configuration_files/ .


Yo quería hacer lo mismo. Lo mejor que pude encontrar fue la solución de @ MicTech. Sin embargo, como señala @MotoWilliams, esto no sobrevive a ninguna actualización hecha por Git en el archivo .gitconfig que reemplaza el enlace con un nuevo archivo que contiene solo la nueva configuración.

Lo resolví escribiendo el siguiente script de PowerShell y ejecutándolo en mi script de inicio de perfil. Cada vez que se ejecuta, copia cualquier configuración que se haya agregado a .gitconfig del usuario en la global y luego reemplaza todo el texto en el archivo .gitconfig con el encabezado [include] que importa el archivo global.

Guardo el archivo global .gitconfig en un repositorio junto con muchos otros scripts y herramientas globales. Todo lo que tengo que hacer es recordar cualquier cambio que el script anexe a mi archivo global.

Esto parece funcionar bastante transparente para mí. ¡Espero eso ayude!

9 de septiembre: se actualizó para detectar cuando las nuevas entradas agregadas al archivo de configuración son duplicadas e ignórelas. Esto es útil para herramientas como SourceTree que escribirá nuevas actualizaciones si no pueden encontrar las existentes y no incluye includes.

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 }