Iš kur gaunami mano „Git“ konfigūracijos nustatymai?

Aš pastebėjau, kad aš turiu 2 įrašus core.autocrlf kai core.autocrlf 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 

Paskutiniai 3 (iš vartotojo.name žemyn) yra vieninteliai mano c:\users\username\.gitconfig . Iš kur ateina visi kiti? Kodėl core.autocrlf yra išvardytas du kartus?

Tai su „msysgit 1.8.3“, ir aš taip pat įdiegiau „SourceTree“ („Windows 7“). „SourceTree“ sistemoje aš išjungiau „Leisti„ SourceTree “keisti pasaulinius„ Git “konfigūracijos failus.

57
20 июля '13 в 1:57 2013-07-20 01:57 RyanW yra nustatytas liepos 20 d. 13:57 2013-07-20 01:57
@ 5 atsakymai

„Git“ tikrina 4 konfigūracijos failo vietas:

  • Jūsų kompiuterio .gitconfig .
  • Jūsų pasirinktas .gitconfig failas yra ~/.gitconfig .
  • Antrasis vartotojo konfigūracijos failas yra $XDG_CONFIG_HOME/git/config arba $HOME/.config/git/config .
  • Vietinis repo konfigūracijos failas .git/config .

Nustatymai pakopuojami tokia tvarka: kiekvienas failas prideda arba panaikina virš jo esančiame faile nustatytus nustatymus.

  • Sistemos konfigūracija
  • Vartotojo konfigūracija
  • Repo specifinė konfigūracija.

Galite pamatyti, ką kiekvienas failas identifikuotas su šiomis komandomis:

git config dokumentacijos : 

Jei nėra aiškiai nurodyta --file , yra keturi failai, kuriuose git config ieškos konfigūracijos parametrų:

  • $(prefix)/etc/gitconfig

    Sistemos konfigūracijos failas.

  • $XDG_CONFIG_HOME/git/config

    Antrasis vartotojo konfigūracijos failas. Jei $XDG_CONFIG_HOME nėra nustatytas arba tuščias, bus naudojama $HOME/.config/git/config . Bet koks šiame faile apibrėžtas unikalus kintamasis bus perrašytas to, kas yra ~/.gitconfig . Tai yra gera idėja nesukurti šio failo, jei kartais naudojate senesnes „Git“ versijas, nes parama šiam failui buvo neseniai pridėta.

  • ~/.gitconfig

    Individualizuotos konfigūracijos failas. Taip pat vadinamas „pasauliniu“ konfigūracijos failu.

  • $GIT_DIR/config

    Saugyklos konfigūracijos failas

Jei nenurodomi papildomi parametrai, visi skaitymo parametrai skaitys visus šiuos failus. Jei visuotinio arba visos sistemos konfigūracijos failo nėra, jie bus ignoruojami. Jei kapinyno konfigūracijos failas nėra prieinamas arba nesuprantamas, „ git config “ išeis iš nulinės klaidos kodo. Tačiau jokiu būdu nėra pranešta apie klaidos pranešimą.

Failai yra skaitomi pirmiau nurodyta tvarka, su paskutine nustatyta verte, pirmenybe prieš anksčiau skaitomas reikšmes. Kai po to bus kelios vertės, bus naudojamos visos pagrindinių failų reikšmės.

Pagal numatytuosius nustatymus visi įrašymo parametrai bus įrašyti į konkrečią konfigūracijos failų saugyklą. Atkreipkite dėmesį, kad tai taip pat turi įtakos parametrams, pvz., --replace-all ir --unset . git config vienu metu pakeis tik vieną failą.

Galite pakeisti šias taisykles komandų eilutės parametrais arba su aplinkos kintamaisiais. Pasirinktys - --global ir - --system apribos failą, naudojamą atitinkamai visame pasaulyje arba sistemoje. Aplinkos kintamasis GIT_CONFIG turi panašų poveikį, tačiau galite nurodyti bet kokį norimą failo pavadinimą.

76
20 июля '13 в 2:03 2013-07-20 02:03 atsakymą pateikė vartotojo456814 liepos 20 d., 13 val. 2013-07-20 02:03

Jums nebereikia atspėti, kokia konfigūracija buvo įdiegta, kai git 2.8 yra! (2016 m. Kovo mėn.)

Žr. Įsipareigojimą 70bd879 , priskirti 473166b , priskirti 7454ee3 , priskirti 7454ee3 (2016 m. Vasario 19 d.), Priskirti 473166b , priskirti 7454ee3 (2016 m. Vasario 19 d.), Įsipareigoti 7454ee3 (2016 m. 2016) Lars Schneider ( larsxschneider ) .
( Junio ​​C Hamano - gitster - gitster į dd0f567 , 2016 m. Vasario 26 d

config: pridėti „ --show-origin “, kad spausdintumėte konfigūracijos vertės šaltinį

Jei konfigūracijos reikšmės yra nurodytos naudojant „ git config “ (pvz., Per --get , --get-all , --get-regexp arba --list flag), kartais sunku rasti konfigūracijos failą, kuriame buvo nustatytos reikšmės.

Sužinokite, kaip „ git config “ ' --show-origin ' spausdinti šaltinio konfigūracijos failą kiekvienai atspausdintai vertei.

Dabar git config man puslapis :

 --show-origin: 

Padidinkite visų prašomų konfigūravimo parinkčių išvestį su pradiniu tipu (failas, standartinė įvestis, blob, komandinė eilutė) ir faktine kilme (konfigūracijos failo kelias, ref arba blob id, jei taikoma).

border=0

Pavyzdžiui:

 git config --list --show-origin 

Tai grąžins:

  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 

Dėl vieno parametro komentavo wisbucky :

 git config --show-origin --get-all core.autocrlf file:"D:\\prgs\\git\\latest\\mingw64/etc/gitconfig" true file:C:/Users/vonc/.gitconfig false 
36
27 февр. Atsakymą pateikė VonC 27 vasario mėn. 2016-02-27 17:28 '16 at 17:28 2016-02-27 17:28

Po to, kai anksčiau įdiegėte „ Git for Windows“ ir tada jį ištrynėte, pastebėjau, kad „C“ yra įdiegtas konfigūracijos failas: „Visi vartotojai“ „Git“ konfigūracija, kuri yra sistemos lygio konfigūracijos failas, kuris yra išsaugotas ir turės įtakos būsimiems „mingw32“ paketams ( mano atveju, aš vadovavau savo kompanijos teikiamam „mingw32“ nešiojamam paketui). Kai bėgau

 git config --system --edit 

jis parodys sistemos konfigūracijos failą, esantį mingw32 / etc / gitconfig faile, tačiau jis vis tiek įkelia vertes iš pirmosios vietos. Tai pasireiškė įspėjime, kad bandant naudoti 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" 

(Pastaba: tai taip pat gali būti situacija, kai lfs įspėjimai yra pernelyg stumiami # 861 )

6
12 дек. Atsakymą pateikė jinxcat2008 12.12 . 2015-12-12 03:39 '15 at 3:39 2015-12-12 03:39

„Git config“ rodo visas paveldėtas vertes iš: sistemos, pasaulinės ir vietinės.

Taigi, turite kitą konfigūracijos failą, kuris įkeliamas su jūsų nustatytu vartotojo .gitconfig

2
20 июля '13 в 2:05 2013-07-20 02:05 atsakymą pateikė CBIII liepos 20 d., 13 d., 02:05 2013-07-20 02:05

Jei norite ieškoti, kad rastumėte tikrąją failo vietą, jis bus jūsų namų kataloge.

Jis yra paslėptas ir prieš jį „.“.

Taigi, jei esate „Mac“, galite cd ~ open .gitconfig savo terminale arba atidaryti jį su savo mėgstamu teksto redaktoriumi, pvz., cd ~ atom .gitconfig .

-1
17 нояб. atsakymas pateikiamas AshNaz87 17 lapkričio. 2017-11-17 09:48 '17 at 9:48 2017-11-17 09:48

Kiti klausimai apie žymes arba Užduoti klausimą