J'ai remarqué que j'avais deux annonces pour core.autocrlf
quand je coursgit 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
[email protected]
core.autocrlf=true
Ces trois derniers (de user.name vers le bas) sont les seuls dans mon C:\users\username\.gitconfig
fichier. D'où viennent tous les autres? Pourquoi core.autocrlf est-il répertorié deux fois?
C'est avec MSysGit 1.8.3, et j'ai également installé Sourcetree (Windows 7). Dans Sourcetree, j'ai décoché la case "Autoriser Sourcetree à modifier vos fichiers de configuration Git globaux"
git
msysgit
git-config
RyanW
la source
la source
git config --list --show-origin
, vous n'aurez pas à deviner quelle configuration git est où. Voir ma réponse ciRéponses:
Git vérifie quatre emplacements pour un fichier de configuration:
.gitconfig
Fichier système de votre machine ..gitconfig
fichier utilisateur situé à~/.gitconfig
.$XDG_CONFIG_HOME/git/config
ou$HOME/.config/git/config
..git/config
.Les paramètres en cascade dans l'ordre suivant, chaque fichier ajoutant ou remplaçant les paramètres définis dans le fichier au-dessus.
Vous pouvez voir ce que chaque fichier a défini à l'aide des 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 seul le fichier spécifique au référentiel a défini en ouvrant le fichier
.git/config
pour ce référentiel.Si vous utilisez MSysGit sous Windows, vous trouverez probablement votre
~/.gitconfig
fichier utilisateur où qu'il%homepath%
pointe si vous utilisez àecho %homepath%
partir d'une invite de commande Windows.De la documentation pour
git config
:la source
.gitconfig
fichier système de la machine » sous Windows avec msysgit?C:\Program Files (x86)\Git\etc\gitconfig
. Je ne sais pas si c'est la bonne.C:\Program Files\Git\mingw64\etc\gitconfig
C:\Program Files\Git\etc\gitconfig
Vous n'avez plus à deviner quelle configuration a été définie où, avec git 2.8! (Mars 2016)
Voir commit 70bd879 , commit 473166b , commit 7454ee3 , commit 7454ee3 (19 février 2016), commit 473166b , commit 7454ee3 (19 février 2016), commit 7454ee3 (19 février 2016) et commit a0578e0 (17 février 2016) par Lars Schneider (
larsxschneider
) .(Fusionné par Junio C Hamano -
gitster
- in commit dd0f567 , 26 févr.2016 )La
git config
page de manuel indiquera maintenant:Par exemple:
Cela reviendra:
Pour un réglage, comme commenté par wisbucky :
Avec Git 2.26 (Q1 2020), vous pouvez ajouter l'
--show-scope
option :la source
user.cmdline=true
est nécessaire pour--show-origin
travailler? De plus, j'ai remarqué que cela--show-origin
doit être immédiatement aprèsconfig
pour pouvoir travailler avec--get
et--get-all
. Alors ça devrait être... config --show-origin --get-all core.autocrlf
-c 'user.cmdline=true'
bit, qui semble faire référence à la portée du test: github.com/git/git/blob/…user.cmdline=true
nécessaire dans Git 2.13, mais plus nécessaire dans Git 2.15.Après avoir précédemment installé Git pour Windows et l'avoir ensuite désinstallé, j'ai trouvé qu'il y avait un fichier de configuration installé dans
C:\Users\All Users\Git\config
lequel se trouve un fichier de configuration au niveau du système qui persiste et affectera tous les futurs packages MinGW32 Git (dans mon cas, j'exécutais un MinGW32 portable Package Git fourni par mon entreprise). Quand j'ai couruil me montrerait le fichier de configuration système situé à
mingw32/etc/gitconfig
, mais il chargerait toujours les valeurs du premier emplacement également. Cela s'est révélé comme un avertissement indiquant que les valeurs de configuration entraient en conflit lors de la tentative d'utilisation de Git LFS .(Remarque: cela peut également être une situation où les avertissements LFS sont trop affirmés, # 861 )
la source
Vous pouvez utiliser
--show-origin
pour savoir d'où viennent les configurations.Priorité des fichiers de configuration dans Git pour Windows:
Source: https://github.com/git-for-windows/git/blob/master@%7B2018-01-07%7D/Documentation/git-config.txt#L231
$PROGRAMDATA
est une variable d'environnement. Vous pouvez obtenir la valeur de ces variables comme ceci:Dans Git Bash, vous devez utiliser
echo "$ProgramData"
. Dans CMD, vous devez utiliserecho %PROGRAMDATA%
. Notez que Git Bash prétend apparemment que les variables d'environnement sont sensibles à la casse.C'est quoi
$(prefix)
?Le préfixe est le répertoire de niveau supérieur dans lequel les éléments sont installés. Dans Git pour Windows, c'est soit
<some-path>/mingw64
ou<some-path>/mingw32
.la source
git config -l
affiche toutes les valeurs héritées du système, global et local.Vous avez donc un autre fichier de configuration quelque part qui est chargé avec votre
.gitconfig
fichier défini par l' utilisateur.la source
Une réponse complète pour Windows (c'est-à-dire une version Windows de la réponse acceptée):
Comme Linux, Windows a quatre niveaux de fichiers / paramètres de configuration et trois sont des équivalents directs. La chose importante à noter est l'autre - celle `` Toutes les applications / utilisateurs '' - d'autant plus que c'est là que le programme d'installation définit les valeurs, par exemple `` core.autocrlf = true '', et pourtant elle n'est pas accessible à partir de la ligne de commande donc cela sème la confusion.
Toutes les applications et utilisateurs
C'est comme une version partagée des paramètres «système» au cas où plusieurs applications Git seraient installées. Il n'y a pas de commande 'git config' pour y accéder, mais elles ont toujours un impact sur le résultat net pour un paramètre.
Emplacement du fichier de configuration:
C: \ ProgramData \ Git \ config
(Notez que «ProgramData» était «Tous les utilisateurs» sur les anciennes versions de Windows.)
Système
Emplacement du fichier de configuration: C: / Program Files / Git / mingw64 / etc / gitconfig
Utilisateur
Emplacement du fichier de configuration:% USERPROFILE% .gitconfig (Cela se résout en 'C: / Users / <username>')
Dépôt
Emplacement du fichier de configuration: [répertoire du référentiel actuel] /. Git / config
la source
En plus de
git config -l --show-origin
, que j'ai présenté ici , avec git 2.8 (mars 2016), vous l'avez maintenant, avec Git 2.26 (Q1 2020)git config
appris à montrer dans quel "scope
", en plus de quel fichier, chaque paramètre de configuration provient.Voir commit 145d59f , commit 9a83d08 , commit e37efa4 , commit 5c105a8 , commit 6766e41 , commit 6dc905d , commit a5cb420 (10 février 2020) et commit 417be08 , commit 3de7ee3 , commit 329e6ec (24 janvier 2020) par Matthew Rogers (
ROGERSM94
) .(Fusionné par Junio C Hamano -
gitster
- in commit 5d55554 , 17 fév 2020)Exemple:
la source
Sous Windows 7 (peut-être identique ou similaire pour Windows 10), pour Visual Studio et la ligne de commande Git, votre configuration globale est dans:
(le point est devant le nom du fichier)
Mais cela n'est pas honoré par Sourcetree, du moins en mode Git Embedded, et la configuration est en:
(pas de point devant le nom du fichier)
(J'avais besoin de mettre à jour les deux fichiers pour modifier mes paramètres Git globaux pour la commande Git et Sourcetree.)
Une autre partie amusante. La configuration des hooks Git fonctionnait à partir de l'
AppData\Local\...
emplacement, mais après plus de recherche via Process Monitor , j'ai remarqué que Sourcetree charge également le lecteur global à partir du lecteur mappé de l'entreprise pour mon utilisateur.Cela n'a pas de sens car très peu d'applications recherchent cet emplacement, mais Sourcetree le fait d'une manière ou d'une autre, donc si vous ne pouvez pas le faire fonctionner par paramètres d'emplacement sur Sourcetree, exécutez Process Monitor et créez une règle pour enregistrer uniquement le chemin contenant gitconfig, et vous peut trouver où se trouve réellement votre configuration globale dans le cas d'un répertoire d'utilisateurs mappé sur le réseau.
Et ce n'est peut-être même pas la faute de Sourcetree, comme je vois maintenant en écrivant ceci que git.exe charge cela, mais cela ne se produit que pour git.exe exécuté par Sourcetree, alors qu'une ligne de commande directe Git utilise
%USERPROFILE%\.gitconfig
Enfin, j'ai pris tous les résultats de Process Monitor, je les ai introduits dans SQL Server et j'ai exécuté une requête pour obtenir des résultats distincts (aucun ordre d'exécution particulier juste trié par chemin):
Je ne sais pas comment ces configurations se rapportent les unes aux autres, mais je sais que certaines remplacent un autre certains paramètres fonctionnent d'un endroit à un autre.
Et la liste ci-dessus est invoquée par Sourcetree , encore une fois, une ligne de commande directe avec Git semble fonctionner correctement ,
%USERPROFILE%\.gitconfig
et ce n'est pas sur cette liste, mais cela ressemblerait à ceci (sur Windows 7)C:\Users\pawel.cioch\.gitconfig
la source
Si vous voulez trouver pour trouver l'emplacement réel du fichier, il sera dans votre répertoire personnel.
Il est masqué 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é, par exemplecd ~ && atom .gitconfig
.la source