Par défaut sur Windows, Git place le fichier global .gitconfig dans c:\documents and settings\user\
Comment puis-je changer cette position pour que .gitconfig soit stocké c:\my_configuration_files\
?
Cela peut-il être fait du tout?
Par défaut sur Windows, Git place le fichier global .gitconfig dans c:\documents and settings\user\
Comment puis-je changer cette position pour que .gitconfig soit stocké c:\my_configuration_files\
?
Cela peut-il être fait du tout?
Réponses:
Si vous définissez HOME
sur c:\my_configuration_files\
, git y localisera .gitconfig. La modification des variables d'environnement est décrite ici . Vous devez définir la variable HOME, puis rouvrir n'importe quelle fenêtre cmd.exe. Utilisez la commande "set" pour vérifier que HOME pointe bien vers la bonne valeur.
Le changement de HOME affectera bien sûr également d'autres applications. Cependant, à la lecture du code source de git, cela semble être le seul moyen de changer l'emplacement de ces fichiers sans avoir besoin d'ajuster la ligne de commande. Vous devriez également considérer la réponse de Stefan: vous pouvez définir la variable GIT_CONFIG. Cependant, pour lui donner l'effet que vous désirez, vous devez passer le --global
drapeau à tous les appels git (plus tous les fichiers .git / config locaux sont ignorés).
.gitconfig
fichier dans ce répertoire, cela ne fonctionne pas.
Changer le répertoire HOME car c'est faux. Mieux vaut créer un lien symbolique pour gitconfig vers le répertoire HOME.
$HOME
trouve sur un lecteur réseau et chaque fois qu'il y a un problème avec la connexion réseau, le lien est également inaccessible.
J'ai résolu ce problème en utilisant une approche légèrement différente que j'ai vue fonctionner pour d'autres fichiers de configuration. Git Config supports comprend que vous permet de pointer vers un fichier de configuration dans un autre emplacement. Cet autre emplacement est ensuite importé et développé sur place comme s'il faisait partie du fichier .gitconfig. Alors maintenant, je n'ai qu'une seule entrée dans .gitconfig:
[include]
path = c:\\path\\to\\my.config
Les mises à jour écrites par Git dans le fichier .gitconfig n'écraseront pas mon chemin d'inclusion. Cela signifie que parfois je peux avoir besoin de déplacer des valeurs de .gitconfig vers my.config.
git config --file "included.file"
Regardez dans la section FICHIERS et ENVIRONNEMENT de git help config
.
Je ne suis pas un maître Git, mais après avoir cherché la solution qui fonctionnait le plus facilement pour moi, il suffisait d'aller dans un éditeur de texte C:\Program Files (x86)\Git\etc
et de l'ouvrir profile
.
Il y a une if
déclaration à la ligne 37 # Set up USER's home directory
. J'ai sorti la if
déclaration et mis dans le répertoire local que je voulais que gitconfig soit, puis j'ai juste copié mon fichier gitconfig existant (se trouvait sur un lecteur réseau) à cet emplacement.
Pour moi, changer l'emplacement de départ (de git-gui au moins) n'affectait pas où il cherchait .gitconfig. Ma configuration au travail monte U: pour notre maison, mais nous n'avons pas la permission d'écrire dans U: directement, seulement les sous-répertoires qui ont été créés pour nous à l'intérieur, donc c'était un facteur décisif pour moi.
J'ai résolu le problème en créant un script batch qui remplacerait les variables d'environnement HOMEDRIVE et HOMEPATH uniquement pour cette application. Ensuite, j'ai changé mon raccourci du menu Démarrer pour qu'il pointe plutôt vers ce script de commandes.
Si vous êtes sous Windows et que vous rencontrez des problèmes pour changer les variables d'environnement ou en mklink
raison de privilèges insuffisants, une solution simple à votre problème est de démarrer git batch dans un autre emplacement.
Faites un clic droit sur Git Bash.exe, cliquez sur Propriétés et modifiez la propriété "Démarrer dans" en c:\my_configuration_files\
.
%HOMEDRIVE%%HOMEPATH%
en `c: \ my_repo_folder`. A travaillé un charme.
Je voulais faire la même chose. Le mieux que j'ai pu trouver était la solution de @ MicTech. Cependant, comme l'a souligné @MotoWilliams, cela ne survit pas aux mises à jour effectuées par Git sur le fichier .gitconfig qui remplace le lien par un nouveau fichier contenant uniquement les nouveaux paramètres.
J'ai résolu ce problème en écrivant le script PowerShell suivant et en l'exécutant dans mon script de démarrage de profil. Chaque fois qu'il est exécuté, il copie tous les paramètres qui ont été ajoutés au fichier .gitconfig de l'utilisateur dans le fichier global, puis remplace tout le texte du fichier .gitconfig par un en-tête [include] qui importe le fichier global.
Je garde le fichier global .gitconfig dans un référentiel avec de nombreux autres scripts et outils globaux. Tout ce que j'ai à faire est de ne pas oublier de vérifier toutes les modifications que le script ajoute à mon fichier global.
Cela semble fonctionner de manière assez transparente pour moi. J'espère que ça aide!
9 septembre: mise à jour pour détecter quand les nouvelles entrées ajoutées au fichier de configuration sont des doublons et les ignorer. Ceci est utile pour des outils comme SourceTree qui écriront de nouvelles mises à jour s'ils ne peuvent pas trouver les existantes et ne suivent pas les inclusions.
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
}
Comme quelqu'un qui s'intéresse à cela depuis TRÈS LONGTEMPS. Voir dans le manuel:
$ XDG_CONFIG_HOME / git / config - Deuxième fichier de configuration spécifique à l'utilisateur. S'il $XDG_CONFIG_HOME
n'est pas défini ou vide, $ HOME / .config / git / config sera utilisé. Toute variable à valeur unique définie dans ce fichier sera écrasée par ce qui se trouve dans ~ / .gitconfig. C'est une bonne idée de ne pas créer ce fichier si vous utilisez parfois des versions plus anciennes de Git, car la prise en charge de ce fichier a été ajoutée assez récemment.
Ce qui n'a été ajouté que récemment. Ce vidage est de la version 2.15.0.
Travaille pour moi.
%PROGRAMFILES%\Git\etc
profile
HOME="c:\location_were_you_want_gitconfig"
Remarque: les autorisations de fichier sont généralement limitées, alors modifiez-les en conséquence, sinon vous ne pourrez pas enregistrer vos modifications.
git config --list --show-origin
montre que le HOME d'origine est toujours en place.
Pour moi, cela a fonctionné très simplement:
Solution sans avoir à changer le
système d'exploitation variable de Windows HOME : Windows 10
version git: 2.27.0.windows.1
J'utilise la version portable de Git, donc tous mes fichiers de configuration sont sur ma clé USB (E :). C'est ce qui a fonctionné pour moi:
.gitconfig
et d'autres fichiers bash dans E , alors j'ai créé un dossier appelé home où je les veux tous.mkdir home
HOME="E:\git\home"
Maintenant, il ne recherche plus dans le répertoire C: \ Users <username> pour .gitconfig mais ne recherche que dans votre chemin défini ci-dessus.
$ git config --global --list
fatal: unable to read config file 'E:/git/home/.gitconfig': No such file or directory
Il a donné une erreur car il n'y a pas encore de fichier .gitconfig. Ceci est juste pour démontrer que nous avons réussi à changer l'emplacement du fichier .gitconfig sans changer le répertoire HOME dans Windows.