D'où viennent les paramètres de ma configuration Git?
j'ai remarqué que j'ai 2 listings pour core.autocrlf
quand j'exécute git config -l
$ git config -l
core.symlinks=false
core.autocrlf=false
color.diff=auto
color.status=auto
color.branch=auto
color.interactive=true
pack.packsizelimit=2g
help.format=html
http.sslcainfo=/bin/curl-ca-bundle.crt
sendemail.smtpserver=/bin/msmtp.exe
diff.astextplain.textconv=astextplain
rebase.autosquash=true
user.name=name
user.email=email@example.com
core.autocrlf=true
Those last 3 (from user.nom vers le bas) sont les seuls dans mon fichier c:usersusername.gitconfig
. Où sont tous les autres à venir? Pourquoi est-core.autocrlf listé deux fois?
c'est avec msysgit 1.8.3 et J'ai aussi SourceTree installé (Windows 7). Dans SourceTree, j'ai décoché la case "Autoriser SourceTree de modifier vos fichiers de configuration de Git"
5 réponses
Git contrôles de 4 places pour un fichier de configuration:
- le système de votre machine
.gitconfig
fichier.
"1519310920 de Votre compte utilisateur - un deuxième fichier de configuration spécifique à l'utilisateur situé à
$XDG_CONFIG_HOME/git/config
ou$HOME/.config/git/config
. - La local de pensions du fichier de config
.git/config
.
.gitconfig
fichier situé à ~/.gitconfig
.
Les paramètres de la cascade à la suite de l'ordre, avec chaque ajout de fichier ou les cadres supérieurs définis dans le fichier au-dessus de lui.
- config Système.
- la configuration de l'Utilisateur.
- Repo-configuration spécifique.
vous pouvez voir ce que chaque fichier a défini en utilisant les commandes suivantes:
# System, applies to entire machine and all users
$ git config --system --list
$ git config --system --edit
# User defined
$ git config --global --list
$ git config --global --edit
vous pouvez voir ce que le fichier repo-specific a défini en ouvrant le fichier .git/config
pour ce repo.
si vous utilisez msysgit sur Windows, vous trouverez probablement votre utilisateur ~/.gitconfig
fichier où jamais %homepath%
pointe si vous utilisez echo %homepath%
à partir d'une invite de commande de Windows.
De la documentation git config
:
S'il n'est pas défini explicitement avec
--file
, il y a quatre fichiers oùgit config
recherchera les options de configuration:
$(prefix)/etc/gitconfig
fichier de configuration pour L'ensemble du système.
$XDG_CONFIG_HOME/git/config
Second fichier de configuration spécifique à l'utilisateur. Si
$XDG_CONFIG_HOME
est définissez pas ou vide,$HOME/.config/git/config
sera utilisé. Tout la variable à valeur unique définie dans ce fichier sera écrasée par tout ce qui est dans~/.gitconfig
. C'est une bonne idée de ne pas créer cette fichier si vous avez parfois utilisez des versions plus anciennes de Git, comme support pour ceci le fichier a été ajouté assez récemment.
~/.gitconfig
fichier de configuration spécifique à l'utilisateur. Aussi appelé configuration "globale" fichier.
$GIT_DIR/config
fichier de configuration spécifique du dépôt.
si aucune autre option n'est étant donné, toutes les options de lecture Lira l'ensemble de ces fichiers sont disponibles. Si le système mondial ou l'ensemble du système les fichiers de configuration ne sont pas disponibles, ils seront ignorés. Si l' le fichier de configuration du dépôt n'est pas disponible ou lisible,
git config
sortira avec un code d'erreur non nul. Cependant, dans les deux cas un message d'erreur sera émis.Les fichiers sont lus dans l'ordre donné ci-dessus, avec la dernière valeur trouvée priorité sur les valeurs lire antérieur. Lorsque plusieurs valeurs sont prendre ensuite toutes les valeurs d'une clé de tous les fichiers seront utilisés.
toutes les options d'écriture vont par défaut écrire au dépôt spécifique fichier de configuration. Notez que cela affecte aussi les options comme
--replace-all
et--unset
.git config
ne changera jamais un seul fichier à la fois.vous pouvez outrepasser ces règles soit par des options de ligne de commande ou par environnement variable. Les options
--global
et--system
limitez le fichier utilisé au fichier global ou à l'ensemble du système respectivement. La variable d'environnementGIT_CONFIG
a un effet similaire, mais vous pouvez spécifier un nom de fichier que vous voulez.
vous n'avez plus à deviner quelle configuration a été réglée à où, avec git 2.8! (Mars 2016)
Voir commettre 70bd879 , commettre 473166b , commettre 7454ee3 , commettre 7454ee3 (19 Février 2016), commettre 473166b , commettre 7454ee3 (19 Février 2016), commettre 7454ee3 (19 Février 2016), et commettre a0578e0 (17 Février 2016) par Lars Schneider ( larsxschneider
) .
(fusionné par Junio CA Hamano -- gitster
-- dans commit dd0f567 , 26 Feb 2016)
config: ajouter '
--show-origin
' option pour imprimer l'origine d'une valeur de configurationsi les valeurs de configuration sont questionnées en utilisant "
git config
"(p.ex. via--get
,--get-all
,--get-regexp
, ou--list
drapeau), il est parfois difficile de trouver le fichier de configuration où les valeurs ont été définies.Enseigner "
git config
" la "--show-origin
' option pour imprimer la source fichier de configuration pour chaque valeur imprimée.
Le git config
l'homme page indique:
--show-origin:
augmente la sortie de toutes les options de configuration avec le type d'origine (Fichier, entrée standard, blob, ligne de commande) et l'origine réelle (chemin du fichier de configuration, ref, ou id de blob si applicable).
par exemple:
git config --list --show-origin
qui reviendra:
file:$HOME/.gitconfig user.global=true
file:$HOME/.gitconfig user.override=global
file:$HOME/.gitconfig include.path=$INCLUDE_DIR/absolute.include
file:$INCLUDE_DIR/absolute.include user.absolute=include
file:.git/config user.local=true
file:.git/config user.override=local
file:.git/config include.path=../include/relative.include
file:.git/../include/relative.include user.relative=include
command line: user.cmdline=true
Pour un paramètre, comme , a commenté par wisbucky :
git config --show-origin --get-all core.autocrlf
file:"D:\prgs\git\latest\mingw64/etc/gitconfig" true
file:C:/Users/vonc/.gitconfig false
après avoir installé Git for Windows et l'avoir désinstallé, j'ai trouvé qu'il y a un fichier de configuration installé à C:\Users\All Users\Git\config qui est un fichier de configuration au niveau du système qui persiste et affectera les futurs paquets git mingw32 (dans mon cas, j'exécutais un paquet git mingw32 portable fourni par ma compagnie). Quand j'ai couru
git config --system --edit
il me montrerait le fichier de configuration du système situé à mingw32/etc / gitconfig, mais chargerait encore les valeurs du premier emplacement. Cela s'est révélé comme un avertissement que les valeurs de configuration se sont heurtées lors de l'utilisation de Git lfs
WARNING: These git config values clash:
git config "http.sslcainfo" = "C:/Users/foo/AppData/Local/Programs/Git/mingw64/ssl/certs/ca-bundle.crt"
git config "http.sslcainfo" = "/ssl/certs/ca-bundle.crt"
(Note: Ceci peut aussi être une situation où les avertissements de l'EFT sont trop assertifs #861 )
git config-l affiche toutes les valeurs héritées: système, global et local.
donc vous avez un autre fichier de configuration quelque part qui est chargé avec votre utilisateur défini .gitconfig
si vous voulez trouver l'emplacement du fichier, il sera dans votre répertoire personnel.
Il est caché et précédé d'un ".".
donc si vous êtes sur un Mac, dans votre terminal vous pouvez cd ~ && open .gitconfig
ou l'ouvrir avec votre éditeur de texte préféré, E. g cd ~ && atom .gitconfig
.