Je voulais juste ajouter que je rencontre cela aussi. J'ai tous mes autres trucs de configuration globale git ("exludesfiles" et "attrirutesfile") dans% userprofile% /. Git / .gitignore (donc dans un dossier), mais le .gitconfig j'aimerais qu'il soit placé juste à côté d'eux , mais doit être à la racine de% userprofile% .. juste vraiment ennuyeux.
WORMSS
6
Des progrès depuis que la question a été posée? Mon .gitconfig se trouve par défaut sur un lecteur réseau, ce qui signifie qu'il ne peut pas le lire lorsque je suis hors ligne.
Lech Rzedzicki
Réponses:
67
Si vous définissez HOMEsur 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 --globaldrapeau à tous les appels git (plus tous les fichiers .git / config locaux sont ignorés).
Hmm, je ne sais pas si j'ai bien compris mais le changement de HOME n'aura-t-il pas une influence sur toutes les autres applications qui l'utilisent? N'y a-t-il pas un moyen de changer HOME, mais local en Git?
Tour du
Oui, cela aurait également un effet sur d'autres applications. Vous avez demandé comment changer d'emplacement, et je vous l'ai dit. Voir ma modification.
Martin v.Löwis
10
Quelqu'un a-t-il vraiment réussi à faire fonctionner cela sans que les effets secondaires du déménagement à la MAISON ne gâchent tout un tas d'autres choses?
Ade Miller
Il s'agit probablement d'une solution qui fonctionne sur la plate-forme Windows. Cela a fonctionné aussi pour moi. J'ai utilisé le script refreshenv de Chocolatey pour actualiser la variable d'environnement HOME que j'ai définie (variable d'environnement utilisateur). Après cela, j'ai obtenu l'emplacement de fichier souhaité.
Tore Aurstad
J'ai dû réinstaller Git pour que cela fonctionne. Si je viens d'ajouter une nouvelle variable d'environnement nommée HOME et que je déplace le .gitconfigfichier dans ce répertoire, cela ne fonctionne pas.
Csa77
46
Changer le répertoire HOME car c'est faux. Mieux vaut créer un lien symbolique pour gitconfig vers le répertoire HOME.
Déplacez votre .gitconfig du répertoire de base de l'utilisateur vers le répertoire où vous le souhaitez.
Exécutez la ligne de commande en tant qu'administrateur
Cela peut valoir la peine d'ajouter que si vous exécutez git config --global pour ajouter un élément à votre configuration, votre lien symbolique sera écrasé par la copie réelle du .gitconfig qui est utilisé. J'ai rencontré ce problème lors du test d'un emplacement où \ PathForNewLocationOfConfig.gitconfig était mon dossier Dropbox
MotoWilliams
8
Si votre .gitconfig se trouve sur un lecteur réseau, vous pouvez recevoir un message «Le périphérique ne prend pas en charge les liens symboliques» qui exclut cette option.
midi et
4
Je ne pense pas que cette solution fonctionnera pour personne. Dans notre entreprise, se $HOMEtrouve 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.
andreee
1
@MotoWilliams revisite cela en 2017: le lien symbolique reste intact après l'édition avec --global
Snake
2
Ici, la police de groupe (AD) définit HOMEDRIVE, HOMEPATH et HOMESHARE, mais pas simple, old, simple HOME. En l'absence de HOME, git semble utiliser une combinaison des trois précédents. Mais définir HOME (via la méthodologie habituelle pour définir des variables d'environnement spécifiques à l'utilisateur) fonctionne: GIT utilise la valeur HOME que vous avez définie, et grouppolicy ne supprime pas HOME.
David I. McIntosh
29
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.
+1: pas de configurations étranges et mon gitconfig global est quelque chose que je stocke dans un dépôt git lui-même, donc garder une trace de ce qu'il y a dedans est mon travail. Lors de modifications globales, je modifie simplement le fichier global à la main. Donc, cela fonctionne parfaitement pour moi, et ne nécessite aucune bizarrerie comme changer votre variable d'environnement "HOME", ce qui est une idée étrange juste pour obtenir la configuration de Git où vous le souhaitez. Le répertoire personnel a après tout d'autres significations pour de nombreux autres programmes. Vous pouvez également mettre une identité différente en haut et conserver les mêmes paramètres clés dans toutes les identités avec cette solution. Excellent!
user62177541
2
Je me demande s'il est possible de faire écrire à git config dans le fichier du fichier [include] d à la place.
Jonathan Nazario
1
@JonathanNazariogit config --file "included.file"
Pero P.
12
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\etcet de l'ouvrir profile.
Il y a une ifdéclaration à la ligne 37 # Set up USER's home directory. J'ai sorti la ifdé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.
Merci beaucoup. Bien que toutes les autres options aient échoué pour moi, cela m'a fait gagner un million de déclarations git multipliées par 6 secondes: D voici ce que j'ai fait ... `HOME =" $ USERPROFILE \ Downloads \ Tools \ Git_Config "`
PravyNandas
2
Le mot 'home' (ou tout ce qui vous ressemble line: 37) n'existe plus dans git 2.24 (décembre 2019).
Frank Nocke
6
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 mklinkraison 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\.
Wow, cela fonctionne totalement avec facilité. Créé un nouveau raccourci et sous 'propriétés-> démarrer dans' changé %HOMEDRIVE%%HOMEPATH%en `c: \ my_repo_folder`. A travaillé un charme.
Shane
2
Cela n'a pas fonctionné pour moi. Le fichier .gitconfig était toujours chargé à partir de mon répertoire personnel
Dave B
3
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.
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_HOMEn'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.
Il s'agit de la solution la plus simple, la moins intrusive et la plus fiable de Windows.
kwill
2
Passer au dossier %PROGRAMFILES%\Git\etc
Modifier le fichier profile
Ajouter à la première ligne HOME="c:\location_were_you_want_gitconfig"
Terminé
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.
Cela ne fonctionne pas depuis git 2.24, Win10, décembre 2019. git config --list --show-originmontre que le HOME d'origine est toujours en place.
Frank Nocke
1
Pour moi, cela a fonctionné très simplement:
Copiez ".gitconfig" de l'ancien répertoire: vers% USERPROFILE% (standard dans "c: \ users \ username")
Faites un clic droit sur les icônes de démarrage de GITGUI et GITBASH et remplacez "run in": "% HOMEDRIVE %% HOMEPATH%" par "% USERPROFILE%". Bien entendu, vous pouvez utiliser n'importe quel autre répertoire au lieu de "% USERPROFILE%".
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:
Téléchargez Git portable depuis https://git-scm.com/ . Exécutez le fichier et installez-le à l'emplacement requis. Je l'ai installé dans E: \ git .
Exécutez git-bash.exe à partir de E: \ git .
Je voulais mettre .gitconfiget d'autres fichiers bash dans E , alors j'ai créé un dossier appelé home où je les veux tous. mkdir home
Allez dans le dossier etc et ouvrez le fichier appelé profile (dans mon cas, c'est E: \ git \ etc \ profile)
Ajouter un chemin absolu à la maison répertoire que nous avons créé (ou dans le répertoire où vous voulez avoir votre fichier .gitconfig situé) à la fin du profil fichier. 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.
Réponses:
Si vous définissez
HOME
surc:\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).la source
.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.
la source
$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:
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.
la source
git config --file "included.file"
Regardez dans la section FICHIERS et ENVIRONNEMENT de
git help config
.la source
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'ouvrirprofile
.Il y a une
if
déclaration à la ligne 37# Set up USER's home directory
. J'ai sorti laif
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.la source
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.
la source
Vérifiez d'abord le paramètre HOME, puis changez HOME et HOMEDRIVE en un répertoire existant.
puis changez HOME et HOMEDRIVE en
la source
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\
.la source
%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.
la source
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.
la source
%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.
la source
git config --list --show-origin
montre que le HOME d'origine est toujours en place.Pour moi, cela a fonctionné très simplement:
capture d'écran avant
capture d'écran après
la source
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.
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.
la source